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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 愤怒的哈博兔 中级黑马   /  2015-8-4 21:46  /  416 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

01、多态的概述与前提

一 多态:对象在不同时刻表现出来的不同状态。

二 多条的前提条件:

A:要有继承关系
B;要有方法的重写
C:要有父类的引用指向子类对象


----------------------------------------------------------------------------------------------------------------
02、多态中的成员特点
Fu fu = new Zi();
左边是Fu   右边是Zi
A:成员变量        :编译看父类(看程序会不会报错,如果父类有这个变量就不报错),运行看父类(这个程序运行的结果是谁)
B:成员方法        :编译看父类(看程序会不会报错,如果父类有这个方法就不报错),运行看子类(这个程序调用的方法是谁)
C:因为方法有重写而变量没有
----------------------------------------------------------------------------------------------------------------
03、多态的弊端及相应的解决方案
一 多态的弊端及解决方法
多态的弊端:父类引用无法使用子类特有功能
解决办法:可以把父类向下转型

二 引用类型:
向上转型:小到大
向下转型:大到小


----------------------------------------------------------------------------------------------------------------
04、多态中的类型转换问题
一 在这个知识点中出现类型转换异常的根本原因是多态没有继承关系.

类型转换异常:
java.lang.ClassCastException

如果遇到了这个异常那么表示代码中出现了类型不匹配

如果两个类没有任何关系不能互相转换(关系指的是继承或者实现)
----------------------------------------------------------------------------------------------------------------
05、多态中的类型转换问题内存图解分析
----------------------------------------------------------------------------------------------------------------
06、多态的好处
多态的好处:
可以提高代码的扩展性和可维护性

----------------------------------------------------------------------------------------------------------------
07、抽象类的概述

想要定义一个类为抽象类怎么表示:
类用关键字 abstract 修饰
----------------------------------------------------------------------------------------------------------------
08、抽象类的基本特点

抽象类:类用关键字 abstract 修饰
抽象方法:方法声明要用 abstract, 第二没有方法体

一 抽象类不能被实例化。那么,怎么实例化呢?
通过多态创建子类对象去实例化.

二 如果一个类继承抽象类,那么想要代码不出错怎么解决?
A、子类继承抽象类,子类必须重写父类的所有抽象方法
B、要么子类也定义为抽象类

四 在继承中,我们为什么有些时候,会选择父类是抽象类呢?
可以强制子类做某些事.

注意:有抽象方法的类一定是抽象类(或者是接口)
     抽象类中可以没有抽象方法.
----------------------------------------------------------------------------------------------------------------
09、抽象类的成员特点

A:成员变量:既有变量也有常量
B:构造方法:有构造方法
C:成员方法:有抽象方法也有非抽象方法


一 抽象类既然不能被实例化,那么有构造方法有什么用呢?
答:初始化父类的成员,以便给子类使用.

抽象类中的抽象方法,是为了强制要求子类实现某些功能
抽象类中的非抽象方法,是为了提高代码的复用性,让子类继承的
----------------------------------------------------------------------------------------------------------------
10、抽象类案例讲解(老师案例)

抽象关键字abstract不可以和哪些关键字共存?
final   被final修饰的方法不能被重写,而抽象方法最终都是要被重写.
static  如果一个方法被static 修饰那么这个方法就可以直接用类名.调用(这个方法是没有方法体的这样做没有意义)
private  被 private 修饰的方法在子类中是看不见的,所以这个抽象方法也是不能被重写的.
----------------------------------------------------------------------------------------------------------------
11、接口概述
一 如何定义一个接口?
用关键字   interface 接口名

二         如何让一个类去实现一个接口?以及各式
用关键字  implements

格式   class 类名 implements 接口名



----------------------------------------------------------------------------------------------------------------
12、接口的基本特点

特点
A:接口不能实例化
B:接口中的方法,要么被子类重写,要么把子类也定义为抽象类或者接口
----------------------------------------------------------------------------------------------------------------
13、接口的成员特点
A:成员变量:接口中只有常量(因为接口中的变量有默认修饰符 public static final)


B:构造方法:接口中没有构造方法(接口中的常量是static修饰 接口中的方法没有方法体)


C:成员方法:接口中只有抽象方法(因为接口中的 方法有默认修饰符 public abstract)

----------------------------------------------------------------------------------------------------------------
14、类与接口的关系
A:类与类的关系
是继承关系(只能单继承,但是可以多层继承 )

B:类与接口的关系
是实现关系(一个类在继承一个类的同时还可以实现多个接口)

C:接口与接口的关系
继承关系(可以单继承也可以多继承,因为接口直接不会出现方法调用不明确的情况)

D:类与抽象类的关系
继承关系


同类型之前是继承关系(包括类和接口)
不同类型之前是实现关系

----------------------------------------------------------------------------------------------------------------
15、接口的思想特点
A:接口是对外暴漏的原则。
B:接口是程序对外的功能扩展。
C:接口的出现降低耦合性。
D:接口可以用来多实现。
----------------------------------------------------------------------------------------------------------------
16、抽象类和接口的区别

抽象类:
成员变量:可以是变量,也可以是常量。
构造方法:有构造方法。
成员方法:可以是抽象方法,也可以是非抽象方法。

接口:
成员变量:只能是常量。 默认修饰符 public static final
构造方法:无构造方法
成员方法:只能是抽象方法。 默认修饰符 public abstract



A:类与类的关系
继承关系。而且只能单继承,可以多层继承。

B:类与接口的关系
实现关系。可以单实现,也可以多实现。并且还可以在继承一个类的同时,实现多个接口。

C:接口与接口的关系
继承关系。可以单继承,也可以多继承。



抽象类和接口应该如何定义?
抽象类里面定义的是这个体系的共性内容
(可以把一模一样的方法定义为实体方法,把叫法一样但是实现的过程不一样的方法定义为抽象方法)

接口中定义的是扩展功能

----------------------------------------------------------------------------------------------------------------

17-练习题讲解:综合案例分析
如果拿到一个需求
分析:由具体到抽象

实现(写代码的时候):要由抽象到具体

0 个回复

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