class Person {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
}
class Student extends Person {
private String school;
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
}
public class TestPerson {
public static void main(String[] args) {
Student student = new Student();
student.setName("john");
student.setAge(18);
student.setSchool("SCN");
System.out.println(student.getName());
System.out.println(student.getAge());
System.out.println(student.getSchool());
}
}
不是说子类的构造的过程中必须调用基类的构造方法,可是这个程序子类没有构造方法,基类同时也没有构造方法。
------解决方案--------------------
你是怎么知道基类无构造函数呢??
------解决方案--------------------
"子类的构造的过程中必须调用基类的构造方法"这句话是胡扯,子类构造一定会先执行父类的static代码块,但是从来不是调用什么父类构造方法
所有Java对象在不写extends的情况默认都继承Object对象,而Object对象有public Object(){}的空构造方法,因此上面的类都有默认空的构造方法,“程序子类没有构造方法,基类同时也没有构造方法”这个认识也是错误的
任何Java类都有构造方法
------解决方案--------------------
没有明确指定构造器,系统默认构造器,类似public person(){}如果没有默认你怎么新建对象呢
你在person类加一个public person(String arg){this.name=arg};你就可以看到你想要出现的了,子类会报错
------解决方案--------------------
Java语言中,如果没有显式书写类的构造函数,那么类会自动添加一个默认构造函数。所以,楼主的父类和子类虽然没有明确给出构造函数,但是有默认的构造函数。
《Java编程思想》一书中,作者专门对此作了说明。该书是本好书,我正在啃,也推荐楼主看下。
希望能帮到楼主。:-D
------解决方案--------------------
继承关系,子类有调子类,子类没有就调父类。
------解决方案--------------------
------解决方案--------------------
子类如果没有写构造方法,会调用父类无参数的构造方法
------解决方案--------------------
没有明确指定构造器,系统默认构造器 如果明确给出就没有默认之说了
------解决方案--------------------
默认继承了无参构造啊!
要不你在Person里写个有写构参,你再Student类里面也写个有参构构,试试!
看能看出问题来不!
------解决方案--------------------
你这种理解是需要条件的,当子类没有覆盖的构造方法的时候会调用继承自父类的构造方法
你子类写个构造方法,父类写个同名构造方法,子类调用难道也自动调用父类构造方法?
你把这个条件给漏掉了,还不是胡扯?
------解决方案--------------------
------解决方案--------------------