zoukankan      html  css  js  c++  java
  • 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
      
  • 相关阅读:
    Asp.Net多线程用法1
    Asp.Net操作FTP方法
    django 利用PIL 保存图片
    django —— Celery实现异步和定时任务
    豆瓣源安装requirements.txt
    一个有趣的python排序模块:bisect
    Python 多线程
    python list元素为dict时的排序
    python版本坑:md5例子(python2与python3中md5区别)
    单独的 python 脚本文件使用 django 自带的 model
  • 原文地址:https://www.cnblogs.com/zzz1zzz/p/14264725.html
Copyright © 2011-2022 走看看