Java 中的上转型对象 使用

呵呵。最近交接工作比较闲,顺便温习一下基础的知识吧:

今天看看上转型对象。相信学过Java的童鞋们,对这个改变不陌生,很多公司笔试题也都有这个知识点。从两点来说明:

[b]问题1:为什么要是用上转型对象?[/b]

我们用案例说明:假如公司总部只负责财务结算,子公司负责货物运输,突然有一个客户(调用f方法的地方)打电话给总公司(相当于打电话给ObCompany ),说需要运输一批货物,总公司需要怎么办,肯定是吧这个业务接下来,然后下放到子公司SubCompany需要对象转换,就是要确认那个子公司有资格去做货物运输业务

不需要强转,要么总公司能自己执行货物运输业务
要么,客户知道子公司名称,直接打电话给子公司

第一种方法就是吧 transfer 这个属性设置为Animal的属性
class ObCompany {
public String name;
public String transfer;
......
}
然后去掉SubCompany的tranfer 属性(???思考一下哦。亲。)

这样的缺陷很明显,意思是所有子类都有transfer属性,就好象,说有子公司都能负责货物运输,实际情况不可能如此

第二种:修改f方法的参数类型[/b]
public void f(SubCompany a) {
System.out.println("name: "+a.name);
System.out.println(" "+a.transfer+" function");
}
就像上面这样
缺陷:改方法只针对Cat类型适用了

[b]问题2:怎么使用上转型对象?[/b]
假设B类是A类的子类或间接子类,当用子类B创建一个对象,并把这个对象的引用放到A类的对象中时,如
A a = new B();

A a;
B b=new B();
a=b;
那么,称这个A类对象a是子类对象b的上转型对象(好比说:"老虎是哺乳动物").对象的上转型型对象的实体是子类负责创建的,但上转型对象会失去原来的一些功能.

上转型对象具有如下特点:
1)上转型对象不能操作子类新增的成员变量(失掉了这部分属性),不能使用子类新增的方法(失掉了一些功能).
2)上转型对象可以操作子类继承或隐藏的成员变量,也可以使用子类继承的或重写的方法.
3)上转型对象操作子类继承或重写的方法时,就时通知对应的子类对象去调用这些方法.因此,如果子类重写了父类的某个方法后,对象的上转型对象调用这个方法时,一定是调用了这个重写的方法.
4)可以讲对象的上转型对象再强制转换到一个子类的对象,这时,该子类对象又具备了子类的所有属性和功能.

注意:a.不要将父类创建的对象和子类对象的上转型对象混淆;b.不可以将父类创建的对象的引用赋值给子类声明的对象(不能说:"哺乳动物是老虎")

特此申明:这些内容有些是从网上找的。只是做一总结而已。可供借鉴。有不妥的地方,请指出,灰常感谢。

附件:是我写的代码,里面有具体的使用方法,也有其他的知识点,看一下就彻底明白怎么去使用了【上转型对象】了。吼吼
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值