呵呵。最近交接工作比较闲,顺便温习一下基础的知识吧:
今天看看上转型对象。相信学过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 B b = (B) a; ``` 这里的 a 是父类对象,我们可以使用强制类型转换来将其转换为子类对象 B。这时我们需要注意的是,如果父类...
在 Java 中,上转型和下转型对象的使用非常广泛,特别是在泛型中。通过上转型和下转型,我们可以更方便地实现对象之间的类型转换,提高代码的灵活性和可维护性。但是,我们也需要注意上转型和下转型的使用规则,避免...
总之,Java的转型运算符是编程过程中不可或缺的一部分,它们允许我们灵活地在不同数据类型之间操作,并在面向对象编程中实现多态性。理解和熟练运用这些转换技巧是成为一名合格的Java开发者的必备技能。
### Java中的对象转型与多态 #### 一、对象转型 在Java中,对象转型(Casting)是指将一个对象的引用从一个类转换到另一个类的过程。这通常发生在类的继承关系中。 ##### 向上转型(Upcasting) - **定义**:将...
通过以上讨论,我们可以看到,Java中子类对象赋值给父类对象是一种强大且灵活的设计模式,它允许我们在代码中使用抽象的父类引用,从而简化编程,增加代码的通用性和可维护性。在实际项目中,合理利用这一特性,能够...
Java中使用关键字`extends`来实现继承。子类可以覆盖或重写父类的方法,以实现不同的功能。 3. 多态:多态是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。Java中的多态性体现在接口实现和...
在Java编程语言中,多态性(Polymorphism)是面向对象编程的三大特性之一,其余两者为封装和继承。多态性允许我们使用一个通用的接口来处理不同类型的对象,使得代码更具灵活性和可扩展性。这个特性使得程序在设计...
在Java编程语言中,向上转型和向下转型是对象多态性的关键组成部分,它们涉及到对象的类型转换,使得程序设计更加灵活且易于维护。下面将详细解释这两种转型的概念、原理及应用。 ### 向上转型 向上转型指的是将一...
在Java编程语言中,对象转型是一种重要的概念,它允许我们改变对象的类型,以便我们可以以不同的方式使用同一个对象。在上述实例中,我们探讨了两种主要的转型方式:向上转型(upcasting)和向下转型(downcasting)...
java关于类和对象课件,类的继承 方法的重写 Object类 对象转型 多态
10. **泛型**:泛型是Java 5引入的新特性,它允许在类、接口和方法中使用类型参数,增强了代码的类型安全性和可读性。 这些知识点在提供的源代码中应该有详细的实现示例,通过阅读和分析这些代码,你可以更深入地...
9. 泛型:泛型是Java SE 5.0引入的新特性,允许在类、接口和方法中使用类型参数,以增强类型安全性和代码复用。 10. 集合框架:Java集合框架是一组接口和类,用于存储和操作对象。主要包括List、Set、Queue等接口,...
Java面向对象编程是一种强大的软件开发方法,它基于“对象”的概念,强调数据和操作数据的方法紧密结合。这个资源包“java面向对象案例源码及PPT”显然是为了帮助初级Java学习者深入理解面向对象编程的基本原理和...
主要讲述了JAVA中对象的转型的相关问题。
标题中的“使用json-lib将java对象转换成json字符串”指的是在Java编程中,利用json-lib这个库来将Java对象转化为JSON格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端...
10. 泛型:泛型允许在类、接口和方法中使用类型参数,增强了代码的类型安全性和重用性。 11. 集合框架:Java集合框架包括List、Set、Map等接口以及其实现类,如ArrayList、HashSet、HashMap等,提供了存储和操作...