问个void问题,新手苦苦思索求大神帮助
首先是例子package pack;
class person{
private String name;
private int age;
public void person(){
System.out.println("调用了个人类的构造方法");
}
public void SetNameAge(String name,int age){
this.name=name;
this.age=age;
}
public void show(){
System.out.println("姓名:"+name+"年龄:"+age);
}
}
class student extends person{
private String department;
public void student(){
System.out.println("调用了学生类的构造方法");
}
public void SetDepartment(String dep){
department=dep;
System.out.println("我是"+dep+"的学生");
}
}
public class Text{
public static void main(String[]args){
student stu=new student();
stu.person();
stu.student();
//stu.SetDepartment("a");
//stu.SetNameAge("张小三", 21);
//stu.show();
//stu.SetDepartment("计算机系");
}
}
输出结果 调用了个人类的构造方法
调用了学生类的构造方法
如果我吧person方法和student方法前的void去掉,为什么不用调用方法,直接实列化对象就能输出结果呢?如下
package pack;
class person{
private String name;
private int age;
public person(){
System.out.println("调用了个人类的构造方法");
}
public void SetNameAge(String name,int age){
this.name=name;
this.age=age;
}
public void show(){
System.out.println("姓名:"+name+"年龄:"+age);
}
}
class student extends person{
private String department;
public student(){
System.out.println("调用了学生类的构造方法");
}
public void SetDepartment(String dep){
department=dep;
System.out.println("我是"+dep+"的学生");
}
}
public class Text{
public static void main(String[]args){
student stu=new student();
//stu.person();
//stu.student();
//stu.SetDepartment("a");
//stu.SetNameAge("张小三", 21);
//stu.show();
//stu.SetDepartment("计算机系");
}
}
--------------------编程问答-------------------- 如果加了void,就是类的方法,如果不加void,那就是构造方法。 构造方法有要求,必须与类名相同。 在你这个例子中,你可以把 public void person() 与 public person() 都加上的。 但是你不可以把 public void show() 与 public show() 都加上。 因为类名是 person,而不是show。
构造方法的特点是,当类被实例化时会自动执行。 --------------------编程问答-------------------- 额 person 类名最好大写
[public] Person(){}//构造器
public person(){} // 会报错
public void person(){} // 普通方法 --------------------编程问答-------------------- 楼上正解,楼主好好看看书先。。 --------------------编程问答-------------------- 包名一般全小写,类名一般开头大写,方法一般开头小写, --------------------编程问答-------------------- 这个例子不是很正规,一般类名的首字母是要大写的
构造函数的格式是有规范的:函数名和类名一样,访问修饰符可以是public,也可以是private,没有返回类型,可以有参数。
如果函数符合这个要求,那就是构造函数,否则是普通函数。
不带参数的构造函数是默认构造函数,你可以自己声明一个,也可以不声明,系统隐含有这样的构造函数。
默认构造函数在类被装载的时候自动调用。
当把public void person()的void去掉后,它就成了构造函数,由于没有参数,它就成了默认构造函数,所以new person的时候就自动执行了 --------------------编程问答-------------------- 额,有点明白了,谢谢大家
补充:Java , Java SE