java三大特性之多态的认识,以及多态的实际应用(一)

package d11;

class duot{

public static void main(String[] args) {

/*多态的使用

Animal类,定义了eat()和sleep()方法,

Animal的子类Dog类,覆盖了sleep类,添加了shout()方法

多态就是 可以把(dog类)对象放入(Animal类)的引用里面,

就是把子类放入父类引用,Animal a =new Dog();

通过这个引用a能调用eat()和sleep()方法,不能调用shout()方法,因为Animal类中没有调用shout(),

a.sleep()是会调用dog类中的sleep(),dog类中的sleep()重写了Animal类中的sleep,

所以a.sleep()找的就是dog类覆盖之后的sleep(). */

Animal a =new Dog();

a.eat();//This is a eat()

//a.shout();//不能调用shout方法,会报错,Animal类中没有调用shout方法;

a.sleep();//sleep 3 hours

/*类型转换

子类引用赋值给父类引用,可以直接赋值。

父类引用赋值给子类引用,必须_强制类型转换,

保证编译通过,但是运行时可能发生 类型转换异常。

*/

//(编译时不出错,运行时可能发生类型转换异常)

//这个强制类型转换其实是给编译器看的,使他不理会这个异常,

//因为Animal类中并不一定装的是这个dog对象。只是可能,

//如果换成Animal a =new Cat();则就会编译不报错运行报错类型转换异常

Dog d =(Dog)a;//引用间的赋值;需要强制类型转换,

d.shout();//这时候就能调用shout方法了,

//instanceof关键字

/*Instanceof 是一个二元运算符组成一个布尔表达式;

使用方法: 引用 instanceof 类名

就是判断该引用所指向的对象 和后边的这个类名是否兼容;

可以把instanceof形象的比喻为 是不是 是就是真,不是就是假;

*/ //例:a里面装的是一个狗

System.out.println(a instanceof Dog);//true a是一个狗

System.out.println(a instanceof Cat);//false a不是一个猫

System.out.println(a instanceof Animal);//true a是一个动物

//instanceof关键字可以规避上面的风险,先判断a里面装的是不是狗

//是去做强转,绝对不会出错,否则不强转;

//所以上面程序可以改为:

if (a instanceof Dog) {

Dog d =(Dog)a;

d.shout();

}

}

}

class Animal{

public void eat(){

System.out.println(“This is a eat()”);

}

public void sleep(){

System.out.println(“sleep 6 hours”);

}

}

class Dog extends Animal{

public void shout(){

System.out.println(“Wang Wang !!!”);

}

public void sleep(){

System.out.println(“sleep 3 hours”);

}

}

//测试类型强转,和instanceof关键字,

class Cat extends Animal{

}

其中程序中用到了instanceof关键字,Instanceof 是一个二元运算符组成一个布尔表达式;

可以把instanceof形象的比喻为 是不是 是就是真,不是就是假;
在强制类型转换之前可以用instanceof判断,从而规避类型转换异常的发生;

架构学习资料

准备两个月,面试五分钟,Java中高级岗面试为何越来越难?

准备两个月,面试五分钟,Java中高级岗面试为何越来越难?

准备两个月,面试五分钟,Java中高级岗面试为何越来越难?

![准备两个月,面试五分钟,Java中高级岗面试为何越来越难?](https://upload-images.jianshu.io/upload_images/24616006-f24e26b57640ad41

必看视频!获取2024年最新Java开发全套学习资料 备注Java

?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

准备两个月,面试五分钟,Java中高级岗面试为何越来越难?

由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
)]

?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

[外链图片转存中…(img-vtSkCPpF-1716452564672)]

由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

  • 23
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值