`
tonysmith
  • 浏览: 170981 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java 中的上转型对象 使用

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

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

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

我们用案例说明:假如公司总部只负责财务结算,子公司负责货物运输,突然有一个客户(调用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类型适用了

问题2:怎么使用上转型对象?
假设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.不可以将父类创建的对象的引用赋值给子类声明的对象(不能说:"哺乳动物是老虎")

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

附件:是我写的代码,里面有具体的使用方法,也有其他的知识点,看一下就彻底明白怎么去使用了【上转型对象】了。吼吼

分享到:
评论

相关推荐

    上转型对象体现多态

    深入理解Java中向上转型对象体现的多态,以及面向对象思想

    Java实现运用上转型对象抽象方法计算圆形或圆锥的面积、周长等成员变量

    Java实现运用上转型以及对象抽象方法计算圆形或圆锥的面积、周长等成员变量

    Java上转型和下转型对象

    给大家讲述了Java上转型和下转型对象的详细用法以及相关的代码分享,有兴趣的朋友可以学习下。

    使用java实现面向对象编程

    第一章面向对象的java实现--封装 一.封装 二.构造方法 三....第二章面向对象的java实现----继承和多态 一....二.向上转型和向下转型 三....四....第三章面向对象的java实现—接口 ...三.Java中的final关键字

    java关于类和对象课件

    java关于类和对象课件,类的继承 方法的重写 Object类 对象转型 多态

    Java4Android 21_对象的转型

    主要讲述了JAVA中对象的转型的相关问题。

    java中多态的使用实例

    主要java中接口,继承以及抽象等基础内容的实例,实初学者能刚好的理会多态的具体含义

    计算机后端-Java-Java核心基础-第14章 面向对象06 04. 向下转型的使用.avi

    计算机后端-Java-Java核心基础-第14章 面向对象06 04. 向下转型的使用.avi

    java对象转型实例分析

    主要介绍了java对象转型的概念及用法,并以实例形式进行了较为详细的介绍,需要的朋友可以参考下

    java的向上转型(学校教的)

    在主类中people类的声明对象分别作为Chinapeople和Americanpeople类对象的上转型对象,并让这个上转型对象调用showname方法。编写一个people类,该类有string类型的成员变量firstname和lastname来存放people对象的...

    JAVA上百实例源码以及开源项目

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java源码包---java 源码 大量 实例

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    JAVA上百实例源码以及开源项目源代码

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java类和对象,上转型,接口回调

    (3)在main方法中,从键盘上输入1(表示球体)、2(表示立方体)、3(表示圆柱体)时,调用get方法可以分别得到球体、立方体、圆柱体的体积。 第二部分 有一个接口UnitPrice,如下所示: interface UnitPrice { ...

    Java 向下转型的意义

     但是向下转型,会不会觉得很傻,我是要用子类实例对象,先是生成子类实例赋值给父类引用,在将父类引用向下强转给子类引用,这不是多此一举吗?我不向上转型也不向下转型,直接用子类实例行了。  我开始学习...

    java源码包2

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java的对象引用与对象的区别、多态性理解、向上转型和向下转型、栈和堆等综合型的知识.docx

    如果你没写,Java会给你补上一个默认的构造函数。 3) 左边的 “Vehicle veh1”创建了一个Vehicle类引用变量。所谓Vehicle类引用,就是以后可以用来指向Vehicle对象的对象引用。 4)“=”操作符使对象引用指向刚创建...

    JAVA上百实例源码以及开源项目源代码 java开源包2

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java源码包4

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

Global site tag (gtag.js) - Google Analytics