java面向对象多态

  • 多态概述:某一个事物,在不同时刻表现出来的不同状态。
    多态前提:要有继承关系;要有方法重写。 其实没有也是可以的,但是如果没有这个就没有意义。要有父类引用指向子类对象。父 f = new 子();
  • 多态中的成员访问特点
    成员变量:编译看左边,运行看左边。
    构造方法:创建子类对象的时候,会访问父类的构造方法,对父类的数据进行初始化。
    成员方法:编译看左边,运行看右边。
    静态方法:编译看左边,运行看左边。
  • 多态的好处:提高了代码的维护性(继承保证)、提高了代码的扩展性(由多态保证)
  • 抽象类:抽象类和抽象方法必须用abstract关键字修饰
    抽象类格式: abstract class 类名 {}
    抽象方法格式: public abstract void eat();
    抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
    抽象类中可以有构造方法,抽象类不能进行实例化,那么要构造方法有什么作用呢?
    用于子类访问父类数据时的初始化
    抽象类不能直接实例化那么,抽象类如何实例化呢?
    按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
    抽象类的子类
    要么是抽象类
    要么重写抽象类中的所有抽象方法
    - 抽象类的成员方法特性:
    抽象方法 强制要求子类做的事情。
    非抽象方法 子类继承的事情,提高代码复用性
  • 接口特点
    接口用关键字interface表示 格式: interface 接口名 {}
    类实现接口用implements表示 格式: class 类名 implements 接口名 {}
    接口不能实例化
    那么,接口如何实例化呢?
    按照多态的方式来实例化。
    接口的子类
    可以是抽象类。但是意义不大。
    可以是具体类。要重写接口中的所有抽象方法。(推荐方案)
    接口成员特点
    - 成员变量;只能是常量,并且是静态的。
    默认修饰符:public static final
    建议:自己手动给出。
    构造方法:接口没有构造方法。
    - 成员方法:只能是抽象方法。
    默认修饰符:public abstract
    建议:自己手动给出。
    - 抽象类和接口的区别:
    - 成员区别
    抽象类:成员变量:可以变量,也可以常量
    构造方法:有
    成员方法:可以抽象,也可以非抽象
    接口:成员变量:只可以常量
    成员方法:只可以抽象
  • 关系区别
    类与类
    继承,单继承
    类与接口
    实现,单实现,多实现
    接口与接口
    继承,单继承,多继承
  • 设计理念区别
    抽象类 被继承体现的是:”is a”的关系。 抽象类中定义的是该继承体系的共性功能。
    接口 被实现体现的是:”like a”的关系。 接口中定义的是该继承体系的扩展功能。

猜你喜欢

转载自blog.csdn.net/qq_36558578/article/details/85109532