1. 用super来引用当前基类(父类)的成分 就是说子类继承父类时,父类的某个方法虽然完成的不是很好但是也完成了部分功能不必重写,就用super.f() 调用父类的相应方法,再接着写你想实现的功能。如下面student里面的getInfo方法引入了父类的方法。
class Person{
String name;
int age;
void setName(String name){this.name = name;}
void setAge(int age){this.age = age;}
String getName(){return name;}
int getAge(){return age;}
void getInfo(){System.out.println("age is " + age + "\n" + "name is " + name);}
}
class Student extends Person{
String school;
void setSchool(String school){this.school = school;}
String getSchool(){return school;}
void getInfo(){
super.getInfo();
System.out.println("school is "+school);
}
}
public class TestJC{
public static void main(String[] args){
Student s1 = new Student();
s1.setName("Henry Lee");
s1.setAge(24);
s1.setSchool("UF");
s1.getName();
s1.getAge();
s1.getInfo();
}
}
2. 如果父类class只有缺省构造方法,也就是编译器自动为你产生的。而子类中也只有缺省构造方法,那么不会产生任何问题,因为当你试图产生一个子类的实例时,首先要执行子类的构造方法,但是由于子类继承父类,所以子类的缺省构造方法自动调用父类的缺省构造方法。先产生父类的实例,然后再产生子类的实例。 这点可见上面的例子,子类和父类都没有构造方法,则也不影响 新对象的产生。
3.如果是子类有非缺省的构造方法,则父类也必须有构造方法才行,至少要有空的构造方法。而且在子类构造方法里,要把父类的构造方法写在第一行,如果没写,系统自己补上父类空的构造方法。