JAVA面向对象,重写 重载的区别, 抽象类, 接口,final

  1. final
    1. 声明一个属性表示常量, 需要声明时赋值/构造方法中赋值
      1. 通常与static连用, 只有一份, 类常量
      2. 否则每个对象堆中有一份该常量
    2. 声明一个方法
      1. 不可以被子类重写
    3. 声明一个类
      1. 不可以被继承
      2. String类为final类型类
      3. 应用: 常量类
    4. 在参数中使用
      1. 表示不可以在方法内部对该参数重新赋值

 

  1. 抽象类
    1. 将一些具有相同特征和行为的类抽象为抽象类(将许多相同特征和行为的对象抽象为一个类)
    2. 使用abstaract关键字声明一个抽象类
    3. 规则:
      1. 抽象类中可以没有抽象方法
      2. 不可以实例化
      3. 抽象方法用abstract声明, 由子类/抽象子类来实现
        1. 非抽象子类必须实现父类所有的抽象方法
        2. 抽象类继承抽象类, 可以不用实现
      4. 默认添加无参构造
      5. 不能为声明为final, 因为这样不能有子类, 则无意义
    1. 抽象类的意义:
      1. 为子类提供统一的类型
      2. 封装子类重复的内容(成员变量/方法)
      3. 定义有抽象方法, 各子类虽然有不同的实现, 但方法的定义是一致的

 

  1. 接口
    1. 接口是一组行为规范的定义, 没有实现
    2. OOP原则, 面向接口编程
    3. 规则:
      1. 抽象方法默认: public abstract
      2. 常量默认默认:public static final, 接口中只能定义常量
      3. 不可以有静态/非静态代码块
      4. /抽象类可以实现多个接口, 使用implements. 类需要实现所有接口中抽象方法
      5. 接口继承接口用extends, 同样可以多继承.
      1. JDK 1.8之后
        1. 可以添加默认实现方法
        2. 格式: default T functionName(M m) {}  --> 默认为public
      2. 接口不属于类, 与类平级(类似于注解, 枚举)
      3. 接口不能有构造方法
      4. 可以IA继承IB, A实现IA,IB, 不推荐
    4. 命名习惯ITest, Testable

 

  1. 多态
    1. 方法的重载与重写
    2. 对象的多态性
      1. 父类的引用指向子类的对象
        1. 编译期, 能调用什么看父类
        2. 运行期, 实际执行哪个实现看子类
    3. 使用父类引用传参, 便于扩展
    1. 多态的意义
      1. 同一个类型的引用指向不同的对象, 有不同的实现
      2. 同一个对象造型成不同的类型, 有不同的功能
      3.  Sport a = new Man()
      4. Wen a  = new Man()
    1. 向上造型
      1. 父类的类型
      2. 实现的接口
    2. 强制转型
      1. 可以通过强制转型将父类型变量转为子类型变量, 前提是该变量指向的对象确实是该子类类型
      1. 也可以通过强制转型将变量转为某种接口类型, 前提是该该变量指向的对象确实实现了该接口
    3. instanceof

      1. 子类 instanceof 父类/父抽象类/接口/父接口 均为true

重写与重载的区别
    1. 这是两种完全不同的语法现象:
      1. 重写是指一个类中定义多个方法名名相同但参数列表不同的方法在编译时根据参数的数量类型顺序来决定调用哪个方法
      2. 重载是指在子类中定义与父类完全相同的方法在程序运行时根据对象的类型(不是引用变量的类型)来调用不同的实现方法
    2. 重要:
      1. 重载编译期绑定根据参数变量的类型来决定执行哪个重载方法
      2. 重写运

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值