JAVA迅猛式语法总结(十一)

6.5 多态

多态即同一方法根据发送对象的不同而采用多种不同的行为方式,一个对象的实际类型时确定的,但是可以指向的引用类型就有很多。

直接上代码解释:

public class App {//app

    public static void main(String[] args) {
        Dog dog1 = new Dog();
        Pet dog2 = new Dog();
        Object dog3 = new Dog();
    }
}

可以看出,对象的实际类型是确定的,但其引用类型是不确定的。

但只能是父类的引用(即类型)指向子类,父类不能调用子类的独有的方法,换种说法,左边的引用是查看能使用哪些方法,右边则是同名方法的方法体。

当然,可以使用强制转换==,将父类直接转换成子类。

注意几点:

  1. 必须要有继承关系才能重写。
  2. 注意是父类引用指向子类对象。
  3. 多态是方法的多态,属性没有多态。

还有一个关键词:instanceof,其是查看当前对象是否和某一类有关系。

public class App {//app

    public static void main(String[] args) {
        Object dog = new Dog();

        System.out.println(dog instanceof Dog);//true
        System.out.println(dog instanceof Pet);//true
        System.out.println(dog instanceof Object);//true
        System.out.println(dog instanceof String);//false
    }
}

可以看出,只有在一条关系树上的才能输出true。

对象的类型转换:

public class App {//app

    public static void main(String[] args) {
        Object dog = new Dog();
		((Dog)dog).run()
    }
}

注意几点:

  1. 子类转换为父类,向上转型,可能会丢失方法。
  2. 父类转换为子类是强制转换,向下转型,丢失精度。
  3. 转换类型可以方便调用方法,减少代码量。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值