向上转型和向下转型

1.向上转型

把子类Son对象赋值给父类对象Dad

Dad d = new Son();

2.向下转型

在向上转型的基础上,将Dad类对象重新强制转换为Son类然后赋值给Son类的对象,此时该对象具备Son类的所有属性和行为。

Dad d = new Son();
Son s = (Son)d;
代码实例:
class Dad{
	public String name="Dad";
	public String age="50";
	public void Sleep(){
		System.out.println(name+" Go to bed");
	}
	public void GoOut(){
		System.out.println("Go out for work");
	}

}
class Son extends Dad{
	public String name="Son";
	public int ID=1001;
	public void Sleep(){
		System.out.println(name+" Go to bed");
	}
	public void GoOut(){
		System.out.println("Go out for study");
	}

}
public class HelloWorld{
	public static void main(String args[]){
		Dad d=new Son();	//上转型变量
		//Son s=new Dad();	不可以将父类创建对象的引用赋值给子类声明的对象。
		d.GoOut();
		d.Sleep();
		System.out.println(d.name);
		//System.out.println(d.ID); 上转型变量不能调用子类新增的属性
		
		Son s=(Son)d;	//下转型变量
		/*此时s具备了Son的所有属性*/
		d.GoOut();
		d.Sleep();
		System.out.println(s.name);
		System.out.println(s.ID);
	}
}
运行结果

在这里插入图片描述

总结

1)上转型对象不能操作子类新增的属性和调用子类新增的方法
2)上转型对象可以访问子类继承或隐藏的属性、调用子类继承的方法或子类重写的实例方法。(等价于子类调用,重写静态方法除外)
3)对于子类重写了父类的静态方法,上转型变量只能调用父类的静态方法
4)可以将上转型变量再强制转换成子类对象,此时改子类对象又具备了子类的所有属性和方法。
5)不可以将父类创建对象的引用赋值给子类声明的对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值