类的承袭总结
1、类的继承
目的:1、提高代码的重用性。
2、减小工作量。
3、提高代码的扩展性。
语法:extends关键字
public 子类名 extends 父类名{
}
public class Student { //学生学习的方法 public void study(){ System.out.println(name+"正在学习"); } public void setName(String name){ this.name = name; } public String getName(){ return name; } private String name; }
public class UNStudent extends Student { public static void main(String []args){ UNStudent uns = new UNStudent(); uns.setName("京京"); uns.study(); } //重写父类方法 public void study(){ System.out.println(getName()+"学习独立自主"); } }
2、方法的重写
前提:1、两个类必须具有继承关系。
2、重写的方法在父类中必须存在。
调用:子类及父类中的对象均可调用重写的方法,且均执行重写后的方法。若子类没有该方法,则执行父类的方法。
与重载的区别:
重载:方法名相同,但参数类型、数量或顺序必有一不同。
在同一类中或有继承关系的类中均可重载。
重写:方法名、参数类型、数量、顺序必须完全相同,访问修饰符可以不同,但子类必须大于或等于父类。
只发生在有继承关系的类中。
3、自动转型
方向:由子类自动转为父类
前提:两个对象所在的类存在继承关系
语法:
[1]直接自动转型
父类名 对象名 = new 子类构造函数();
Student stu = new UNStudent();
[2]在方法中进行自动转型
子类名 对象名 = new 子类构造函数();
UNStudent unstu = new UNStudent();
teach(unstu);
访问修饰符 返回值类型 方法名(父类名 参数名){
}
public void teach (Student stu){
}
不必管创建对象左边的部分,只要看右边new的构造函数是子类还是父类,如果是子类,则优先调用子类的方法。
4、多态
java中多态是由类的继承、方法重写、方法重载、自动转型导致的一系列问题。
java在编译的时候,无法确定最终要执行的方法是谁的,就直接去父类中找是否有该方法,如果没有则直接报错,如果有则通过编译;单词可以在运行的时候知道最终要执行的方法是谁的。