多态

多态的代码体现:父类引用指向子类对象

多态的格式:

父类/接口 变量名 =new 子类/实现类();

多态的前提:

要有子父类的继承关系

父类引用指向子类对象

必须要用方法重写,否则多态将失去他的意义

特点:

调用子类重写后的方法

多态的子类可以用多个,调用的是每个子类重写后的方法

编译看父类(左边),运行看子类(右边)

当出现子父继承关系,或者接口实现类的实现关系后,代码可以按照多态的写法,

按照多态的写法时,成员变量和成员方法的访问规则和继承中是一样的

多态中成员变量的访问特点:

直接使用子类对象访问成员变量:等号左边是谁,优先使用谁,没有向上找 name,this,name,super,name

使用成员方法间接访问成员变量:方法属于谁,优先使用谁,没有向上找

多态中成员方法的访问特点:

new的 是谁,优先使用谁,没有向上找

多态的好处和弊端:

好处,多态中父类引用可以接受不同的子类,调用的是每个子类重写后的方法,扩展性强

弊端:此处子类对象表现为父类型态.不能调用子类特有的方法

向上转型:父类引用指向子类对象

多态的本身就是向上转型(把子类对象,当成父类变量使用)

格式:

父类/接口 变量名 = new 子类/实现类();

就像:默认类型转换,取值范围小的数据

可以直接赋值给取值范围大的变量

int a = 10;

double d = a;

2.向下转型:将父类变量,强制转换成子类对象

格式:

实现类/子类 变量名 = (实现类/子类)父类变量;

就像强制类型转换:

double d = 66.66;

int a = (int)d;

3.注意:

在进行向下转型时,如果目标类型和创建该对象时的类型不一致,就会出现类型转换异常

instanceof 关键字

格式:

booleab b=变量名称 instanceof 类名称

返回值:

b如果是true,表示该对象却是是有侧的类型

b如果是false,表示该对象去不是右侧的类型

 

posted @ 2018-05-28 19:18  布凯!  阅读(166)  评论(0编辑  收藏  举报