Java学习笔记(十一)

11.多态

在继承的基础上 , 没有继承就没有多态

狗既有狗的形态,又有动物的形态,被称为狗的多态

一个对象有多种形态,成为对象的多态

//用代码体现多态:

父类的引用指向子类对象
(1)格式:

父类名 对象名 = new 子类名();

接口名 对象名 = new 实现类名();

例:

Animals hashiqi=new Dog();
hashiqi.run();
hashiqi.methodA();

(2)调用成员方法
多态调用成员方法时:
访问规则:看new的是谁,如果没有就向上找
口诀:编译看左边,运行看右边

多态对象调用成员方法时:
访问规则:
直接方法时,看等号左边是谁,优先用谁,没有就向上找
口诀:编译看左边,运行看左边

(3)多态的好处
在开发中当我们不强调具体的对象是谁时,使用多态可以增强代码的扩展性
(4)向上造型:
一定是安全的

Animals a1=new Dog();
showAnimalRun(a1);//强制把狗类转换成动物类,就可以调用动物类的内容
Animals a2=new Cat();
showAnimalRun(a2);//强制把猫类转换成动物类,就可以调用动物类的内容

public static void showAnimalRun(Animals animals){
    animals.run();//调用动物类的方法
}

很多动物奔跑时,利用向上造型就不用在写很多方法了,只调用动物类的一个奔跑就可以

弊端:
一旦向上造型成功,那么无法调用子类原本的特有的内容

解决方案
向下造型(数据的还原):有风险

(5)向下造型
Animals as=new Cat();

//在向下造型的时候需要判断对象是不是相应数据的类型
//instanceof使用格式:你要转的对象 instanceof 要转的类型 -->得到boolean值
if (animals instanceof Dog){
    Dog dog=(Dog) a;
}

if(animals instanceof Cat){
    Cat cat=(Cat)a;
}

(6)引用类型数据传递
Phone手机类
Demo测试类(主类)

public void usePhone(Phone phone){
    phone.call( );

mian方法中调用
向上造型

Phone p = new NewPhone( );
Demo demo=new Demo( );
demo.usePhone( p ); 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值