day6学习内容
回顾封装
- 概念 : 属性私有化(private),提供公共(public) setter&getter方法访问私有属性
- 目的:提高数据安全性(需要进行额外的控制)
抽象
-
前提: 具有相同属性和方法
-
使用: 1. 对象到类
2. 类到父类: 满足 a.将相同属性方法类抽象 b.is-a
继承
-
object类是所有类的父类
-
父类(超类 基类):类抽象到父类,必须满足is-a关系
is-a: A is-a B 即A是B中的一个
-
父类更抽象,子类更具体
-
将相同的属性和方法抽象到父类,子类继承父类的public和protected的属性和方法.
-
优点:提高维护性和扩展性
-
注意: 子类继承父类后,子类的构造方法会自动调用父类的无参数的构造方法.
如果父类的构造方法有参,就将子类中的构造方法写成对应的构造方法
子类用super(参数)调用父类的构造方法
子类用set 和get 方法来调用取和存属性
重写:
(与重载区分,重载是同一个类中,比较方法三要素)是在父子类中,方法名,参数,返回值类型都相同.子类的权限不能比父类更严格
用于解决方法在父类中,每个子类对其有自己的用法
- 可以直接全部重写,
- 也可以部分重写,用super关键字来调用父类的方法.
关键字
- extends:子类单一继承一个父类
- implements: 变相的使java多继承的特性
tip: 1. 注意使用@Override 注解,检查是否是父类方法的重写,每次子类对父类重写之上都写上
-
同名变量.就近原则
-
初始化顺序: 类中先静态后非静态,先父类后子类
父类为默认构造方法时,子类会在构造方法中调用默认的无参的构造方法
多态(理解难点)
- 同一个对象在不同的环境(开发环境 运行环境)下表现出不同的类型(开发中父类.运行环境中子类)
- 使用:
- 在声明数据类型时,能用父类用父类.能用接口用接口(往大用)
- 子类重写了父类的方法时体现
意义:
- 消除类型之间的耦合关系
- 可替换性
- 可扩充性
- 接口性
- 灵活性
- 简化性
-
子类转父类自动转,父类转子类强制类型转换
Pet pet2 = new Cat("猫猫");//用子类的构造方法,构造出一个Cat类型的pet2,自动转换为父类Pet类 ((Cat)pet2).catchMouse();//将父类Pet类型的pet2强转成子类Cat类使用子类的方法
-
对父类类型判断是哪种子类时
pet instanceof Dog//是相同子类型返回ture 不同类型返回false