`
tonysmith
  • 浏览: 175014 次
  • 性别: 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中的上转型对象如何体现多态性,并进一步分析面向对象的设计原则。 ### 多态的概念 多态(Polymorphism)是指一个接口可以被多个类实现,或者一个抽象类可以有多个子类继承,并且这些子类可以...

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

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

    java向上转型向下转型

    在 Java 中,我们可以使用强制类型转换来将父类对象转换为子类对象。例如: ```java B b = (B) a; ``` 这里的 a 是父类对象,我们可以使用强制类型转换来将其转换为子类对象 B。这时我们需要注意的是,如果父类...

    Java上转型和下转型对象

    在 Java 中,上转型和下转型对象的使用非常广泛,特别是在泛型中。通过上转型和下转型,我们可以更方便地实现对象之间的类型转换,提高代码的灵活性和可维护性。但是,我们也需要注意上转型和下转型的使用规则,避免...

    java 转型运算符的资源

    总之,Java的转型运算符是编程过程中不可或缺的一部分,它们允许我们灵活地在不同数据类型之间操作,并在面向对象编程中实现多态性。理解和熟练运用这些转换技巧是成为一名合格的Java开发者的必备技能。

    java中对象转型多态抽象类接口笔记.doc

    ### Java中的对象转型与多态 #### 一、对象转型 在Java中,对象转型(Casting)是指将一个对象的引用从一个类转换到另一个类的过程。这通常发生在类的继承关系中。 ##### 向上转型(Upcasting) - **定义**:将...

    java 子类对象赋值给父类对象的使用

    通过以上讨论,我们可以看到,Java中子类对象赋值给父类对象是一种强大且灵活的设计模式,它允许我们在代码中使用抽象的父类引用,从而简化编程,增加代码的通用性和可维护性。在实际项目中,合理利用这一特性,能够...

    Java实现面向对象编程2章示例

    Java中使用关键字`extends`来实现继承。子类可以覆盖或重写父类的方法,以实现不同的功能。 3. 多态:多态是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。Java中的多态性体现在接口实现和...

    java中多态的使用实例

    在Java编程语言中,多态性(Polymorphism)是面向对象编程的三大特性之一,其余两者为封装和继承。多态性允许我们使用一个通用的接口来处理不同类型的对象,使得代码更具灵活性和可扩展性。这个特性使得程序在设计...

    java向上转型和向下转型.doc

    在Java编程语言中,向上转型和向下转型是对象多态性的关键组成部分,它们涉及到对象的类型转换,使得程序设计更加灵活且易于维护。下面将详细解释这两种转型的概念、原理及应用。 ### 向上转型 向上转型指的是将一...

    java对象转型实例分析

    在Java编程语言中,对象转型是一种重要的概念,它允许我们改变对象的类型,以便我们可以以不同的方式使用同一个对象。在上述实例中,我们探讨了两种主要的转型方式:向上转型(upcasting)和向下转型(downcasting)...

    java关于类和对象课件

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

    Java面向对象程序设计(源代码)

    10. **泛型**:泛型是Java 5引入的新特性,它允许在类、接口和方法中使用类型参数,增强了代码的类型安全性和可读性。 这些知识点在提供的源代码中应该有详细的实现示例,通过阅读和分析这些代码,你可以更深入地...

    Java面向对象程序设计课件

    9. 泛型:泛型是Java SE 5.0引入的新特性,允许在类、接口和方法中使用类型参数,以增强类型安全性和代码复用。 10. 集合框架:Java集合框架是一组接口和类,用于存储和操作对象。主要包括List、Set、Queue等接口,...

    java面向对象案例源码及PPT

    Java面向对象编程是一种强大的软件开发方法,它基于“对象”的概念,强调数据和操作数据的方法紧密结合。这个资源包“java面向对象案例源码及PPT”显然是为了帮助初级Java学习者深入理解面向对象编程的基本原理和...

    Java4Android 21_对象的转型

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

    使用json-lib将java对象转换成json字符串

    标题中的“使用json-lib将java对象转换成json字符串”指的是在Java编程中,利用json-lib这个库来将Java对象转化为JSON格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端...

    java面向对象基础、高级pdf讲义

    10. 泛型:泛型允许在类、接口和方法中使用类型参数,增强了代码的类型安全性和重用性。 11. 集合框架:Java集合框架包括List、Set、Map等接口以及其实现类,如ArrayList、HashSet、HashMap等,提供了存储和操作...

Global site tag (gtag.js) - Google Analytics