Questions tagged «entry-point»

8
为什么用Java和C#而不是构造函数使用静态main方法?
我正在寻找来自主要来源或次要来源的明确答案,为什么Java和C#决定将静态方法作为其入口点,而不是通过Application类的实例表示应用程序实例(具有入口点)作为合适的构造函数)。 我先前研究的背景和细节 这已经被问过了。不幸的是,现有的答案只是在乞求这个问题。特别是,以下答案令我不满意,因为我认为它们是不正确的: 如果构造函数被重载,将存在歧义。–实际上,C#(以及C和C ++)允许使用不同的签名,Main因此存在并解决相同的潜在歧义。 一种static方法意味着在初始化之前,没有对象可以被实例化。–这实际上是错误的,某些对象之前已实例化(例如,在静态构造函数中)。 因此,它们可以由运行时调用,而无需实例化父对象。–这根本没有答案。 为了进一步说明为什么我认为这是一个有效且有趣的问题: 许多框架确实使用类来表示应用程序,并使用构造函数作为入口点。例如,VB.NET应用程序框架使用专用的主对话框(及其构造函数)作为入口点1。 从技术上讲,Java和C#都不需要主要方法。好吧,C#需要一个才能进行编译,但是Java甚至不需要。而且在任何情况下都不需要执行它。因此,这似乎不是技术限制。而且,正如我在第一段中提到的那样,仅出于约定,它似乎不符合Java和C#的一般设计原理。 需要明确的是,使用静态方法并没有特定的缺点main,这很奇怪,这使我想知道其背后是否有某种技术原理。 我对主要来源或次要来源的明确答案感兴趣,而不仅仅是猜测。 1尽管有一个回调(Startup)可能会拦截它。
54 java  c#  history  entry-point 

2
具有静态main方法的Java类的命名约定?
在阅读gnat的答案后,为什么在Java和C#中使用静态main方法而不是构造函数?我以他的回答来表示带有静态main方法的Java类的目的是to define a program entry point,而不是要成为程序本身。 可能有更好的方法来执行此操作,但是我通常使用带有静态main方法的类来执行以下简单操作: public class MenuLauncher { public static void main(String[] args) { Menu menu = new Menu(); menu.run(); } } 上面的代码是否是OOP的最佳实践,在这种情况下,具有静态main的类所做的仅是启动或启动包含在单独的非静态对象中的程序逻辑;毕竟main是静态的,所以MenuLauncher类本身不会受到很大限制吗?因为main是一个起点,所以除了作为切入点之外,我没有看到任何其他目的。 是否存在Java命名约定,通常用于包含main方法并用作程序入口点的类的类?

3
将命令行参数命名为“ argv”的约定从何而来?
似乎Python,PHP和Ruby都使用名称“ argv”来引用命令行参数列表。名称“ argv”从何而来?为什么不使用“ args”之类的东西呢? 我的猜测是它来自C,其中v代表“向量”。维基百科的脚注说: 该变量名称中的向量术语在传统意义上用于指代字符串。 但是,此信息没有任何来源。真的,我很好奇它的根源可以追溯到更远的时候。C之所以使用它,是因为之前有东西使用过它?

4
面向对象编程中的主要职责是什么?
我是面向对象编程的新手,但我不明白主对象的目的是什么。 是的,我读到它是程序的“入口点”,但是我不明白的是程序的主要内容是什么?它的职责是什么? 可能会发生将主体编写的内容封装到另一个对象中的情况,但是您应该使用这种方法多少呢? 这是我用Java编写的第一个主语言,它很简单,但是可能会让您更好地理解我的疑问。我有一个抽象类Animal,它由“ Cat”和“ Dog”扩展。我使用main来创建一些对象,并使用它作为与用户的“接口”,确实如您所见,我使用了一些条件指令来“询问用户”他想做什么。 我的问题来自于这样一个事实,即接口可以封装在另一个对象中,而不是把责任交给主要对象。 public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("What type of animal do you want to create? \n dog cat"); String type = input.nextLine(); if ( Objects.equals(type, "dog")){ System.out.println("Enter the animal's age: "); int age = input.nextInt(); // Scans the …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.