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中高级岗面试为何越来越难?](https://upload-images.jianshu.io/upload_images/24616006-f24e26b57640ad41
必看视频!获取2024年最新Java开发全套学习资料 备注Java
?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
)]
?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
[外链图片转存中…(img-vtSkCPpF-1716452564672)]
由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!