Java基础入门:面向对象-三个特性

170 阅读3分钟

面向对象技术三大特性

继承

  • 什么是继承(inheritance)
    • 继承提供一种方式,可以根据现存的类创建新的类
    • 新的类可以继承现有类的所有 non-private 属性和方法
    • Java中利用 extends 关键字实现继承
  • IS A V.S HAS A
    • 对象间如果是 IS A 关系就可以使用继承
  • 继承相关术语与语法
    • SuperClass(Parent Class/Base Class 基类)
      • 能让别的类继承 non-private 属性/方法
    • SubClass(Child Class/Derived Class 派生类)
      • 继承别的类
    • 语法:class SubClass extends SuperClass {}
  • instanceof 关键字
    • 用途:判断是否是某个类的实例
    • 语法:实例 instanceof 类
    • 返回 boolean

子类实例也是父类的实例,但父类实例不是子类的实例

  • super 关键字

    • 用于在子类中指代父类的对象
    • 用法
      • 访问父类属性
      • 访问父类方法
      • 构造器:在创建子类对象时,会同时创建父类对象(通过隐式调用父类的构造器)
  • 方法重写 Override

    • Override:子类重写父类方法
    • 核心:用自身行为代替父类行为
    • 如何重写:
      • 方法名,参数列表照抄
      • 返回值类型要和父类一样(或者是subType)
      • 访问权限可以大于等于父类方法的访问权限
  • protected 继承访问权限

    • 使用关键字 protected 进行权限控制
    • protected 权限可以被本包中的其他类和其他包中的子类访问
  • final 关键字

    • 修饰变量:变量不可重新赋值
    • 修饰方法:方法不可被 override
    • 修饰类:类不能被继承
  • 深入 Object 类

    • Object 类是所有类的父类
    • Object 类的属性/方法可被所有Java对象使用
    • 没有写 extends 默认继承 Object
    • 两个核心方法:
      • toString
      • equals

封装(encapsulation)→ 实现手段:访问权限

  • 数据隐藏:隐藏类的内部工作原理,并简单地提供一个接口,外部世界可以通过该接口与类进行交互,而不知道内部发生了什么
  • OOP中的封装是指将数据和操作该数据的方法绑定在一个单元(类)中
  • 好处:好维护,好修改,好限制
  • 高内聚,低耦合
  • 封装的每个类最好是单一职责(Single class / Single unit):
    • 私有属性
    • 对外的方法public(getter/setter 修改属性)
    • 仅给本类用的方法private

多态(polymorphism)

  • poly = many morph = forms
  • 为不同数据类型的实体提供统一的接口,或使用一个单一的符号来表示多个不同的类型
  • 记忆例子:正方形,圆形,三角形,六边形都是平面图形,都可以计算面积,但是它们有不同的面积计算公式

对象转型(Cast)

  • 向上转型:Sub Class → Super Class
  • 向下转型:Super Class → Sub Class
  • 向上转型是自动的,向下转型是强制的
  • 向下转型并不是所有转型都能成功,必须根据实例化的类型来转型