day6_inheritance_polymorphis

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 注解,检查是否是父类方法的重写,每次子类对父类重写之上都写上

  1. 同名变量.就近原则

  2. 初始化顺序: 类中先静态后非静态,先父类后子类

    父类为默认构造方法时,子类会在构造方法中调用默认的无参的构造方法

多态(理解难点)

  • 同一个对象在不同的环境(开发环境 运行环境)下表现出不同的类型(开发中父类.运行环境中子类)
  • 使用:
    • 在声明数据类型时,能用父类用父类.能用接口用接口(往大用)
    • 子类重写了父类的方法时体现

​ 意义:

  1. 消除类型之间的耦合关系
  2. 可替换性
  3. 可扩充性
  4. 接口性
  5. 灵活性
  6. 简化性
  • 子类转父类自动转,父类转子类强制类型转换

    Pet pet2 = new Cat("猫猫");//用子类的构造方法,构造出一个Cat类型的pet2,自动转换为父类Pet类
    ((Cat)pet2).catchMouse();//将父类Pet类型的pet2强转成子类Cat类使用子类的方法
    
  • 对父类类型判断是哪种子类时

    pet instanceof Dog//是相同子类型返回ture 不同类型返回false
    
原文地址:https://www.cnblogs.com/zzz1zzz/p/14264725.html