对象转型——向上转型、向下转型

1、向上转型

  • 知识点:对象转型 -- 向上转型(自动转型)

    Father father = new Son();
    • 含义:子类类型 转 父类类型

    • 注意:向上转型之后:

      • 可以调用父类非私有化的成员属性

      • 可以调用父类非私有化的方法属性

      • 可以调用子类重写父类的成员方法

      • 不可以调用子类自己的属性和方法

    • 向上转型就是多态

    • 多态的优缺点:

      • 优点:需求升级时,不违反OCP原则

      • 缺点:不可以调用子类自己的属性和方法(解决方案:再向下转型,就能调用子类自己的属性和方法)

2、向下转型 -- instanceof

  • 知识点:对象转型 -- 向下转型(强制转型)

    • 含义:父类类型 转 子类类型

  • 注意:

    • 1.向下转型有风险(一定要先向上转型后,再把引用向下转型)

    • 2.向下转型必须使用instanceof判断(eg:狗类不能转化为猫类)

	    //ClassCastException - 类型转换异常
		//经验:出现异常,一定要看报错信息
		//Dog dog = (Dog) new Animal();
		
		//正确使用向下转型:一定要先向上转型后,再把父类引用向下转型
		
		Animal an = new Cat();//向上转型:将创建的子类cat对象的内存地址0X001,赋值给父类an,
		
		if(an instanceof Dog){//判断引用an中所指向的对象是否是Dog类(eg:狗类不能转化为猫类)
			Dog dog = (Dog) an;
			dog.eat();
			
		}else if(an instanceof Cat){//判断引用an中所指向的对象是否是Cat类
			Cat cat = (Cat) an;//父类an再将内存地址0X001赋值给子类cat
			cat.shout();
		}

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值