一.Java中类继承的关键字:extends
(1)例如,新建一个学生类
public class Student{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//再新建一个大学生类,即可以继承自学生类
public class UNStudent extends Student{
} //子类会继承父类中所有的方法和属性,当私有的不可以直接调用
//也就是说,当父类的限定符为public,protected和默认时,均可以直接继承
(2)注意!! 当父类自己定义了带参数的构造方法,那么在子类的构造方法中一定要自己调用一下!
public class Student{
private String name;
public Student(String name){
this.name = name;
}
}
public class UNStudent extends Student{
public Student(String name){ //在子类中, 必须再次写带参数的构造方法。
super(""); //若父类中仅有一个无参数的构造方法,那么不必再在子类中写构造方法
}
二.Java子类中方法的重写
有时候子类中要求有与父类相同的方法,但是实现的功能不同,这时候就要用到方法的重写
方法重写的要求:返回值类型、方法名以及参数类型都必须与父类相同
例如,学生都有其学习方法
public class Student{
public void study(){
System.out.println("父类的学习方法!");
}
}
但是大学生的学习方法会和中学生或者小学生的不同,因此子类的方法就必须各自重写
public class UNStudent extends Student{
public void study(){
System.out.println("大学生类的学习方法!");
}
}
//注意!!子类对方法重写后,其访问修饰符的权限必须大于等于父类!
//Java的访问修饰符权限的顺序依次为 public>protected> (default)> private
//当父类方法的限定符为public时,子类必须为public
三.Java中类的自动转型和强制转型
我们用一段代码来解释自动转型和强制转型
public class Main {
public static void main(String[] args) {
Student un = new UNStudent();
//这行代码即为自动转型,注意我们创建的是一个学生对象,但是在new后面调用的是子类的方法
un.study(); //自动转型后子类不可以调用自己特有的方法,只能调用重写过的代码
//当需要调用子类中自己特有的方法时,需要实行强制转型,方法如下(类似于数据类型的强制转换)
UNStudent uns = (UNStudent)un;
uns.demo(); //此demo()方法是大学生类自己特有的,在父类中不存在
四.关于父类和子类对象的调用
比如新建一个老师类
public class Teacher {
public void teach(Student s){ //需要传人一个学生对象
s.study();
}
}
//并新建一个老师对象
Teacher t = new Teacher();
//当老师调用自己的方法时,传入的对象要求为Student类
t.teach(st); //注意,此时传入的既可以为Student类的对象,也可以传入Student所有子类的对象
//也就是说,在类的继承中,所有类要实现某个方法,只需调用同一个方法名
五.总结
Java中利用继承机制将类一级一级联系起来,学好继承是后面学好Java的基础,一定要注意Java中继承的声明和使用。