A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

多态(掌握)
(1)同一个对象在不同时刻表现出来的不同状态。
  另外的表达方式:针对同一个对象,编译期类型和运行期类型不一致。
  举例:
   狗(狗是狗,狗是动物)
   水(水,水蒸气,冰)
(2)前提:
  A:有继承或者实现关系。
  B:有方法重写。
  C:有父类或者接口引用指向子类或者实现类对象。
(3)好处和弊端:
  A:好处
   扩展性和维护性(是由继承和实现保证)。
  B:弊端
   不能使用子类的特有功能。
(4)向上转型和向下转型
  A:向上转型
   把子类对象赋值给父类或者接口引用
  B:向下转型
   把父类或者父接口引用强制转换为子类
(5)多态中的使用成员特点
  A:成员变量
   编译运行都看左边
  B:成员方法
   编译看左边,运行看右边。
  全部看使用的变量类型,只是在调用该方法时,检查子类是否重写。
  
(6)多态的体现形式
  A:具体类多态(几乎不用)
  B:抽象类多态
  C:接口多态
2:抽象类(掌握)
(1)多个具体的事物具备相同的方法声明,而方法体不同,我们就只抽取方法声明,然后定义到一个类中。
    而一个没有方法体的方法是一个抽象方法,一个类中有抽象方法,该类必须定义为抽象类。
(2)抽象类的特点:
  A:抽象类或者抽象方法用abstract修饰。
  B:抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类。
  C:抽象类不能被实例化。
  D:子类继承抽象类(有抽象方法的抽象类),子类要么是抽象类,要么重写所有父类抽象方法。
(3)抽象类的几个小问题
  A:不能被实例化,要构造方法干啥?
  B:一个类中没有抽象方法,居然定义抽象类,有什么意义?
  C:抽象关键字不能和哪些关键字共存
   a:private
   b:final
   c:static
(4)抽象类的成员:
  A:成员变量 有变量,也有常量
  B:构造方法 有构造方法,用于子类访问父类数据的初始化
  C:成员方法 有抽象方法,也有非抽象的方法
(5)抽象类的案例
  A:老师案例
  B:学生案例
  C:员工案例
3:接口(掌握)
(1)当一个抽象类中的方法都是抽象的时候,java就提供了一种更抽象的表达方式,叫接口。
(2)接口的成员特点:
  A:成员变量 是常量 默认修饰符 public static final
  B:成员方法 抽象方法 默认修饰符 public abstract
(3)接口的特点:
  A:接口用interface定义
  B:实现类实现接口用implements标识
  C:接口不能被实例化
  D:子类实现接口的时候,要么是抽象类,要么全部实现接口方法
(4)接口和类的关系
  A:类与类的关系
   继承关系,只能单继承,可以多层继承。
  B:类与接口的关系
   实现关系,可以单实现,也可以多实现。
   还可以在继承一个类的同时,实现多个接口。
  class A extends B implements C,D
  C:接口与接口的关系
   继承关系,可以单继承,也可以多继承。
(5)接口的思想特点(理解)
  A:对外暴露的规则(USB接口)
  B:程序的扩展功能(多态)
  C:降低程序的耦合性(多态)
  D:让类可以多实现
(6)接口和抽象类的区别
  共性:都是不断抽取出来的抽象的内容。
  A:成员特点
   抽象类:
    成员变量 可以变量,也可以常量
    成员方法 可以抽象,也可以非抽象
    构造方法 有
   接口:
    成员变量 只能是常量
    成员方法 只能是抽象
    构造方法 无
  B:继承或者实现关系特点
   a:类与类的关系
    继承关系,只能单继承,可以多层继承。
   b:类与接口的关系
    实现关系,可以单实现,也可以多实现。
    还可以在继承一个类的同时,实现多个接口。
   c:接口与接口的关系
    继承关系,可以单继承,也可以多继承。
  C:设计区别
   抽象类中定义的是体系的共性内容。表达的是:is a的关系。
   接口中定义的是体系的扩展功能。表达的是:like a的关系。
  案例:运动员和教练案例。
(7)如何实现一个继承体系
  分析:由具体到抽象
  实现:由抽象到具体
  学习:抽象的内容,因为它定义的是共性内容。
  使用:具体的内容,因为它才是具体实现,才具备更多的功能。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马