Java面向对象_多态性、instanceof关键字

2022-10-20,,,,

一、多态

分类:方法的重载与重写;对象的多态性

对象的多态性向上转型:将子类实例转为父类实例   格式:父类 父类对象=子类实例;是自动转换

向下转型:将父类实例转为子类实例   格式:子类 子类对象=(子类)父类实例;是强制转换

小结:方法的重载与重写就是方法多态性表现;多个子类就是父类中的多种形态;父类引用可以指向子类对象,自动转换;子类对象指向父类引用需要强制转换;在实际开发中尽量使用父类引用(更利于扩展)

父类设计法则:父类通常情况下都设计为抽象类或接口,其中优先考虑接口,如接口不能满足才考虑抽象类

一个具体的类尽可能不去继承另一个具体类,这样的好处是无需检查对象是否为父类的对象

二、instanceof关键字

通过这个关键字可以很方便的检查对象的类型,但如果一个父类的子类过多,这样判断就显得繁琐,所以产生了上面的父类设计法则。

通常在子类中存在父类中没有的方法,而要用父类引用调用时会用到这个关键字进行判断(一般不建议出现此类情况)

 public class Practice14 {

     public static void main(String[] args) {
// TODO Auto-generated method stub
//用父类的引用指向子类对象
Cat cat=new YeCat();//自动转换 //把父类引用转换为子类对象,有可能发生类型转换异常
//instanceof检查对象是否为某个类型
if(cat instanceof HomeCat){
HomeCat h=(HomeCat)cat;}//强制转换
print(cat);
}
//体现多态,只有在真正使用时才知道是谁跑
public static void print(Cat c){
c.run();
}
}
//抽象类
abstract class Cat{
public abstract void run();
} class HomeCat extends Cat{
public void run(){
System.out.println("跑的慢");
}
} class YeCat extends Cat{
public void run(){
System.out.println("跑的快");
}
}

Java面向对象_多态性、instanceof关键字的相关教程结束。

《Java面向对象_多态性、instanceof关键字.doc》

下载本文的Word格式文档,以方便收藏与打印。