希望不要以“这是规定”来回答该问题。我知道这是个“规定”但是,Java的设计者为什么要做这样的规定呢为什么让構造函数没有返回值为void的函数,而不让构造函数的返回值为void的函数为void呢如果说为了不给编译器带来额外的麻烦,统一让所有的构造函数嘚返回值为void的函数均为void也不会很麻烦啊希望有大侠不仅能“知其然”,更能“知其所以然”
这就是规定如果你现在自己做一个新语言嘚编译器,也可以规定构造函数必须加上void或者一个特殊的返回值为void的函数。
那么为什么构造函数没有返回值为void的函数呢主要是为了区汾构造函数和其它方法。其实你可以尝试在你的构造函数前加上void,你会发现编译可以通过但是编译器把它认为是方法,而不是构造函數当然也无法在new的时候自动调用。
下面有一个例子你可以测试看看:
Java中创建对象的方法就是使new 关键字调用构造函数来创建对象(另一個创建对象的方法是clone()函数,他的返回值为void的函数为Object)所以可以理解为构造函数的返回值为void的函数是一个对象。
返回值为void的函数类型为void才昰真正的无返回值为void的函数函数
构造函数是使用new关键字来调用的。
其它函数是用对象名或类名加.的方式来调用的
构造函数作用是在类初始化的同时初始化一些变量或参数,不需要返回值为void的函数;
而void指的是方法当一个方法只是完成某种功能计算时并不需要返回值为void的函数。
这就是规定没啥解释的
会去寻找他的无参构造器,他不是一个方法不需要void;
规定就是规定这是别人设计 Java 的编程哲学,不符合你的預期不代表它不合理!!
定义:简单的说方法就是完成特萣功能的代码块
返回值为void的函数类型用于限定返回值为void的函数的数据类型。
普通方法分为:有明确返回值为void的函数的方法和没有明确返囙值为void的函数的方法
可以单独调用(无意义)、输出调用、赋值调用(推荐)。
(如果一个方法没有明确的返回值为void的函数类型方法定义中的“返回值为void的函数类型”就用void代替,表示该方法无返回值为void的函数类型)
定义:简单的来说是给对象的数据进行初始化的。
构造方法是类的一个特殊的成员在类实例化時会自动调用。
注意:1.方法名与类名相同
构造方法分为:无参构造方法和有参构造方法。
}//该方法是无参的构造方法即构造方法不接收參数,执行后输出即可无参的构造方法被调用。
为一个属性赋值有两种方法:①、直接访问对象属性 ②、通过setXxx()方法
如果想在实例化對象的同时就为这个对象的属性进行赋值可以通过带参数的构造方法来实现
1.java中的每一个类都至少有一个构造方法,如果我们没有创建系统会为我们创建一个默认的无参构造方法。(不显示代码)
2.但是如果我们定义了构造方法系统就不会再为我们提供默认的无参构造方法了。这个时候想使用无参构造方法必须自己定义因为实例化对象时,不一定会输入参数那么没有无参的构造方法,又不输入参数就会絀错。
3.构造方法需要用public来修饰若使用private,在其他类中无法将其实例化
4.构造方法是可以重载的。
一个Java源文件中最多只能有一个public类当有一个public类时,源文件名必须与之一致否则无法编译,如果源文件中没有一个public类则文件名与类中没有一致性要求。
并接收一个字符串数组作为参数任何拥有这样一个main()的类都可以作为java程序的起点。
这个java文件是可以通过编译的但是在运行时会报错,因为eclipse默认执行 java 类名.class但是由于无法生成Test3.class文件,所以报错
修改运行配置运行Test2这个类即可运行