Java——多态——对象的类型转换

本文介绍了Java中的多态特性,展示了如何将子类对象作为父类使用,以及在方法中如何通过类型转换调用子类特有的方法。同时,讲解了instanceof关键字的用法,用于判断一个对象是否属于特定类或其子类,并提供了示例代码进行说明。
摘要由CSDN通过智能技术生成

Java——多态——对象的类型转换

子类对象当做父类使用时不需要任何显式地声明,需要注意的是,此时不能通过父类变量去调用子类中的某些方法。
案例1:

//定义了 Animal接口——多态
interface Animal11 {
    void shout();   //定义抽象shout()方法
}
//定义 Cat类实现 Animal接口
class Cat11 implements Animal11 {
    //实现抽象方法
    @Override
    public void shout() {
        System.out.println("喵喵……");
    }
    //定义sleep方法
    void sleep() {
        System.out.println("猫睡觉……");
    }
}
//定义测试类
class ExampleA11 {
    public static void main(String[] args) {
        Cat11 cat11=new Cat11();
        animalShout(cat11);   //调用 animalShout()方法,将 an1作为参数传入
    }
    //定义静态的 animalShout()方法,接收一个 Animal类型的参数
//    public static void animalShout(Animal11 animal11) {
//        animal11.shout(); //调用传入参数 animal11的 shout()方法
//        animal11.sleep();
//    }
    private static void animalShout(Animal11 animal11) {
        Cat11 cat11 = (Cat11)animal11;  //**将 animal对象强制转换为 Cat类型**
        cat11.shout();  //调用 cat的 shout()方法
        cat11.sleep();
    }
}

关键字instanceof

它可以判断一个对象是否为某个类(或接口)的实例或者子类实例。

语法格式

对象(或者对象引用变量)instanceof类(或接口)

案例2:

//定义了 Animal接口——多态
interface Animal12 {
    void shout();   //定义抽象shout()方法
}
//定义 Cat类实现 Animal接口
class Cat12 implements Animal12 {
    //实现抽象方法
    @Override
    public void shout() {
        System.out.println("喵喵……");
    }
    //定义sleep方法
    void sleep() {
        System.out.println("猫睡觉……");
    }
}
//定义 Dog类实现 Animal接口
class Dog12 implements Animal12 {

    @Override
    public void shout() {
        System.out.println("汪汪……");
    }
}
//定义测试类
class ExampleA12 {
    public static void main(String[] args) {
        Dog12 dog12 = new Dog12();//创建 Dog类的实例对象
        animalShout(dog12);   //调用 animalShout()方法,将 dog作为参数传入
    }
    public static void animalShout(Animal12 animal12) {
        if (animal12 instanceof Cat12){ //判断 animal是否为 Cat类的实例对象
            Cat12 cat12=(Cat12)animal12;    //将 animal强制转换为Cat类型
            cat12.sleep();  //调用相应方法
            cat12.shout();
        }else {
            System.out.println("这个动物不是猫");
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值