第七章 继承与多态
1、继承(可以解决代码等的冗余问题)
1)继承是面向对象的三大特性之一
2)在Java中 只支持单继承(每个类只能有一个直接父类)
3) extends (关键字)
语法:
访问修饰符 class 类名<子类> extends 类名<父类>{
}
子类可以从父类中继承 属性和方法 但无法继承父类的构造方法 子类无法继承父类的构造方法
public 、protected 访问修饰符 (无论子类和父类是否在同一个包中都可以继承)
默认访问修饰符 (父类和子类必须在同一个包中)
-----------------------------------------------------------------------------------------------
super关键字(当子类中需要调用父类的构造方法、成员时使用)
***1、super关键字只能出现在子类(子类的构造方法、方法)中
***2、用于访问父类的成员,但具有访问权限,无法通过super关键字访问父类的private成员
super();//调用父类的无参构造方法
super(相应的参数);//调用父类的有参构造方法
super . 父类属性/方法
--------------------------------------------------------------------------------------------
实例化子类对象
1、Java 中 创建该类的对象(实例化) 构造方法会执行
2、创建该类子类的对象(子类实例化) 构造方法会执行
*** 1)如果子类的构造方法中没有通过super关键字调用父类的有参构造方法,也没有用this调用自身的构造方法,系统会默认调用父类的无参构造方法
*** 2)如果子类的构造方法中通过super关键字现实的调用了父类的有参构造方法,会执行父类相应的构造方法,不会执行父类的无参构造方法
*** 3)如果子类的构造方法中通过 this 现实的调用了自身的其他构造方法,在相应的构造方法中遵循以上两条规则
------------------------------------------------------------------------------------------
Object类(是所有类的父类,及所有的java类都直接的继承或间接的继承了java.long包中的Object类)
如果没有 extends关键字 那么这个类就直接继承Object类
Object类中的部分方法:
1、toString() 转换成String类行,返回字符串对象
2、equals() 比较两个字符串内容是否相同 返回值 boolean类型
3、clone() 生成当前对象的一个副本,并返回
4、hashCode() 返回该对象的哈希代码值
5、getClass() 获取当前对象所属的类信息,返回Class对象
-------------------------------------------------------------------------------------------
方法重写(如果子类从父类中继承的方法不能满足子类的需求,就可以在子类中对父类的同名方法进行重写)
1)重写方法和被重写的方法必须同名
2)重写的方法和被重写的方法必须具有相同的参数列表
3)重写方法的返回值必须和被重写的方法返回值相同或是其子类
4)重写方法不能缩小被重写发方法的访问权限
*** 重写 、重载
1、重载:在同一个类中同名的方法(同名不同参,与返回值无关)
2、重写:在子类和父类之间( 同名同参返回值类型相同 )