java OOP第03章_继承、抽象类和抽象方法

一、    为什么需要继承:
    若多个类中都需要一些属性和方法,那么就可以将属性和方法抽取到一个父类中,需要的子类可以通过extends关键字去继承这个父类后拥有相应的属性和方法。
    类、数组、方法----引用数据类型
二、 继承的流程:   
1、 编写父类:Animal   2、 编写子类:Dog、Cat、Pig   3、 在子类中通过extends关键字去继承父类:
三、 继承的注意事项:   
1. 父类中的属性和方法只有使用protected、public修饰的才能被子类继承。   2. 当编写一个类时,若使用了extends关键字继承某个父类,该父类就是当前类的直接父类;
      若没有使用extends关键字继承某个父类,系统会自动继承object类,object就是该类的直接父类;所有类都会直接或间接继承object类。   
3. 子类继承父类后,只要父类是使用protected、public修饰的方法都能被子类继承,若子类对父类的方法不满意可以通过@Override标识重写父类的方法。   4. 子类中重写父类方法,子类中的方法访问(范围)修饰符只能是与父类相同或更大,而不能比父类的修饰符更小。   5. Java是一个单继承的开发语言,即一个类只能继承一个父类,但是可以实现多个接口。   6. Final修饰的类是终态类,是不能被其他类继承的;final修饰的方法是终态方法,是不能被子类重写(覆盖)。
四、 继承后的初始化流程:   
1. 初始化父类的属性:   2. 初始化父类的静态代码块:   3. 初始化子类的属性:   4. 初始化子类的静态代码块:   5. 初始化父类的构造方法:   6. 初始化子类的构造方法:   7. 初始化子类或父类的实例方法:
五、 Super关键字:   Super是“超级,父类”的意思,通过该关键字可以去访问父类中的资源(属性、构造方法、实例方法)。   
1. Super访问父类的属性:     格式:super.属性名     举例:super.name   2. Super访问父类的实例方法:     格式:super.方法名()     举例:super.publicMethod()   3. Super访问父类的构造方法:     Super();   注意:     1) 只能在子类的构造方法中调用父类的构造方法,而不能在实例方法中调用父类的构造方法。     2) 调用父类构造方法的语句之前不能有其他语句。注释除外     3) This();调用自己类的构造方法;在一个构造方法中调用另一个构造方法,调用构造方法的语句前不能有其他语句。
六、 抽象方法和抽象类:   
1. 抽象方法:     Java当中的方法有两个部分构成:定义和实现,既有定义部分和实现部分的方法称为实现了的方法;
    只有定义部分而没有实现部分的方法称为抽象方法,抽象方法需要使用abstract关键字修饰,{}用;代替。   
2. 抽象类:     一个类中若包含了抽象方法,那么这个类就必须使用abstract修饰符将他声明为抽象类;抽象类中可以包含抽象方法、实例方法。也可以没有抽象方法。   3. 抽象类的注意事项:     1) 抽象类和接口都是不能被实例化的,即不能创建抽象类和接口的对象。     2) 一个类若继承了一个抽象类或实现接口,该类有两种选择,要么将自己声明为抽象类,要么实现所有的抽象方法。
原文地址:https://www.cnblogs.com/zhangzimuzjq/p/11692236.html