类的继承总结
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在编译的时候,无法确定最终要执行的方法是谁的,就直接去父类中找是否有该方法,如果没有则直接报错,如果有则通过编译;单词可以在运行的时候知道最终要执行的方法是谁的。??
?
?
?
?
?
?
?