多态的向上,向下转型

多态的向上转型

(1)本质:父类的引用指向了子类

(2)语法:父类类型 引用名 = 子类类型

(3)特点:编译类型看左边,运行类型看右边

可以调用父类中的所有成员(须遵守访问权限)

不能调用子类中特有成员

多态的向下转型

(1)语法:子类类型 引用名 = (子类类型)父类引用

(2)只能强转父类的引用,不能强转父类的对象

(3)要求父类的引用必须指向的是当前目标类型的对象

(4)当向下转型后,可以调用子类类型中所有的成员

!!!属性没有重写这个说法,直接看编译类型

例:

public class Test {
    public static void main(String[] args){
       Base base = new num();
       System.out.println(base.count);
    }
}
class Base{
    public int count = 10;
}
class num extends Base {
    public int count = 100;
}
//输出的结果是 10
  • instanceof比较操作符,用于判断对象的运行类型是否为XX类型或XX类型的子类型

public class Test {
    public static void main(String[] args){
       Base base = new num();
        System.out.println(base instanceof num);//true()
        System.out.println(base instanceof Base);//true
    }
}
class Base{}
class num extends Base {}

练习:

判断下面的每条语句,说出原因

public class PolyExercise01{
    public static void main(String args){
        double d = 13.4;//ok
        long l = (long)d;//ok double-->long可以自动转换
        System.out.println(l);
        int in = 5;//ok
        boolean b =(boolean)in;//false 不能把一个int型转化为boolean型
        Object obj = "hello";//ok 向上转型,把String型转为了Object
        String objStr =(String)obj;//ok ,向下转型
        System.out.println(objStr);
        
        Object objPri = new Integer(5);//ok ,向上转型
        String str = (String)objPri;//false , objPri已经指向了integ,强转不过来
        integer str1 = (Integer)objPri;//ok向下转型
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值