19Java面向对象--------向上造型及其代码

向上造型

  • 父类的引用指向子类的对象
  • 能点出来什么看引用的类型
//动物是动物
Animal o1 = new Animal();
//老虎是老虎
Tiger o2 = new Tiger();
//老虎是动物
Animal o3 = new Tiger(;


//动物是老虎-----错误的
Tiger o4 = new Animal();

父类的引用指向子类的对象

  • 一个子类的对象可以向上造型为父类的对象。即:定义父类型的引用可以指向子类的对象
class Foo{
   int value;
   public void f(){...}
   Foo(int value){
     this.value = value;
   }
}
class Goo extends Foo{
   int num;
   public void g(){...}
   Goo(int value,int num){
     super(value);
     this.num = num;
   }
}
//父类的引用可以指向子类的对象
Foo obj = new GOO(100,3);
  • 父类的引用可以指向子类的对象,但通过父类的引用只能访问父类所定义的成员,不能访问子类扩展的部分
class Foo{
   int value;
   public void f(){...}
   ... ... ...
}
class Goo extends Foo{
   int num;
   public void g(){...}
   ... ... ...
}
Foo obj = new Goo(100,3);
obj.value = 200;
obj.f();

//下面的代码会有编译错误,
//Java编译器会根据引用的类型(Foo),
//而不是引用的类型(Goo)来检查
//调用的方法是否匹配
obj.num = 5;
obj.g();

代码

package oo.day03;
//向上造型的演示
public class UpDemo {

	public static void main(String[] args) {
		/*
		Coo o = new Coo();
		o.c = 5;
		o.say();
		*/
		
		/*
		Doo o = new Doo();
		o.d = 5;
		o.show();  //本类
		o.c = 5;
		o.say();   //继承过来了,父类
		*/
		
		//能点出来什么,看类型
		Coo o = new Doo(); //向上造型
		o.c = 5;
		o.say();
		//o.d = 5;
		//o.show(); //错误,点不出来

	}

}
class Coo{
	int c;
	void say(){}
}
class Doo extends Coo{
	int d;
	void show(){}
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值