Day10

封装(private)

  • 该露的露,该藏的藏

    • 程序设计要追求"高内聚,低耦合"。高内聚就类的内部数据操作细节自己完成,不允许外部干涉;低耦合,仅暴露少量的方法给外部使用
  • 封装(数据的隐藏)

    • 通常,应禁止直接访问一个对象数据的实际表示,而应通过操作接口来访问,这称为信息隐藏
  • 属性私有,get/set

继承

  • 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模
  • extends 的意思是”扩展“。子类是父类的扩展
  • Java中类只有单继承,没有多继承。一个子类只能有一个父类,一个父类可以有多个子类
  • 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖,组合,聚合等
  • 继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类用extends关键字来表示
  • 子类和父类之间,从意义上讲应该具有”is a“的关系
  • 私有(private)的东西是无法继承的 所以继承一般是public 方法
  • 子类继承了父类,就会拥有父类的所有方法

super注意点

  • super调用父类的构造方法,必须在构造方法的第一行
  • super必须只能出现在子类的方法或者构造方法中
  • super 和 this 不能同时调用构造方法

VS this

  • 代表的对象不同

    • this:本身调用这个对象
    • super:代表父类对象的应用
  • 前提

    • this:没有继承也可以使用
    • super:只能在继承条件才可以使用
  • 构造方法

    • this();本类的构造
    • super();父类的构造

重写

  • 需要有继承关系,子类重写父类的方法

  • 重写只针对方法

  • 方法名必须相同

  • 参数列表列表必须相同

  • 修饰符:范围可以扩大但不能缩小;public—>protected—>default—>private

  • 抛出的异常:范围,可以被缩小但不能扩大;ClassNotFoundException—>Exception(大)

  • 重写,子类的方法和父类必须一致,方法体不同

为什么要重写

  • 父类的功能子类不一定需要,或者不一定满足
  • alt + insert ;override(方法重写)
/静态的方法和非静态的方法区别很大
//静态方法: 方法的调用只和左边,定义的数据类型有关
//非静态:重写 关键字只能是public
  • static 静态方法

多态

  • 即同一方法可以根据发送对象的不同而采取多种不同的行为方式

  • 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多

  • 多态的存在条件

    • 有继承关系
    • 子类重写父类方法
    • 父类引用指向子类对象
  • 注意:多态是方法的多态,属性没有多态

  • instanceof (数据类型)引用类型 判断一个对象是什么类型; instanceof 可以判断两个类型之间是否有继承(父子)关系

多态注意事项

  • 多态是方法的多态,属性没有多态
  • 父类和子类,是有联系的 类型转换异常ClassCastException!
  • 存在条件 :继承关系,方法需要重写,父类引用指向子类对象 Father f1 = new Son();
    • 不能被重写的方法
      • static 静态方法,属于类,不属于实例
      • final 常量
      • private 私有方法
 //类型之间的转换: 父        子
  //高                 低
  Person1 obj = new Student1();
  //将obj转换为Student1类型,我们就可以使用Student1类型的方法了
  ((Student1)obj).eat();
//子类转换父类可能会丢失自己本来的一些方法
  • 父类引用指向子类的对象

  • 把子类转换为父类,向上转型

  • 把父类转换为子类,向下转型:强制转换

  • 方便方法的调用,减少重复的代码,简洁

上一篇:Python基础学习day10


下一篇:day10 修改用户头像