2 williamchew williamchew 于 2016.04.20 01:35 提问

java向下转型和直接引用子类对象的区别

class A{
}
class B extends A {
}
向下转型:
A a = new B();
B b = (B)a;
直接调用子类:

B b = new B();
这两个 b 实例 有什么区别

3个回答

fubo1990
fubo1990   2016.04.20 07:42
已采纳

实现的功能没有区别。但是维护起来就不如第一个。
第一个是父类引用指向之类对象。可以降低程序的耦合性,即调用者不必关心调用的是哪个对象,只需要针对接口编程就可以了,被调用者对于调用者是完全透明的。让你更关注父类能做什么,而不去关心子类是具体怎么做的,你可以随时替换一个子类,也就是随时替换一个具体实现,而不用修改其他.

caozhy
caozhy   Ds   Rxr 2016.04.20 02:17

完全没有区别。

fk002008
fk002008   2016.04.20 10:11

使用上是没有区别的。

只是涉及到设计上的一些问题而已。

第一点:
传统的面向对象编程是一个纵向的继承的过程。
所以= 左边的都是父类对象,右边是子类的。可以达到多态效果。

第二点:
程序中往往传入的参数需要进行具体类型的重塑
比如泛型模板 List往往传入具体的类的时候需要进行这个 instanceof 判断之后再进行转型
或者是反射的时候生成的对象需要进行这个转型

其他的情况是不需要进行这种转型的。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java向上转型与向下转型(子类的对象赋给父类的)
http://www.cnblogs.com/gold-worker/archive/2012/09/26/2704717.html Java向上转型与向下转型 一.定义:    通俗理解向上转型:    就是子类转型成父类。   classA   {   }   classBextendsA   {   }   A b=new B();   这个就是向上转
多态使用中对象是向上转型或是向下转型的区别
多态基于继承;主要表现是重写; - -其实表现方式是重写和重载 对于创建的对象是向上转型还是向下转型: 向上转型:只能调用与父类引用中父类相同的方法,不能调用子类中自己定义的方法;如果在子类中重写了,则调用的是子类中的方法; 向下转型:可以调用父类中的方法,也可以调用子类中自己定义的方法;如果子类中重写了父类的方法,调用的是子类中重写的方法; /** *
java面向对象之向上转型和向下转型
转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展。 向上转型:子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是接口 向下转型:父类引用的对象转换为子类类型称为向下转型。 前者是一个向上转型,Animal dog 引用指向
Java向下转型
在向下转型过程中,分为两种情况:情况一:如果父类引用的对象是指向的子类实例,那么在向下转型的过程中是安全的。也就是编译是不会出错误的。情况二:如果父类引用的对象是父类实例,那么在向下转型的过程中是不安全的,编译不会出错,但是运行时会出现java.lang.ClassCastException错误。class Father{}class Son extends Father{ public s
Java向下转型的意义
一开始学习 Java 时不重视向下转型。一直搞不清楚向下转型的意义和用途,不清楚其实就是不会,那开发的过程肯定也想不到用向下转型。其实向上转型和向下转型都是很重要的,可能我们平时见向上转型多一点,向上转型也比较好理解。 但是向下转型,会不会觉得很傻,我是要用子类实例对象,先是生成子类实例赋值给父类引用,在将父类引用向下强转给子类引用,这不是多此一举吗?我不向上转型也不向下转型,直接用子类实例就行了
Java向上转型和向下转型(附详细例子)
Java向上转型和向下转型(附详细例子) 熬夜整理的关于Java向上和向下转型的例子,非常的通俗易懂哦~~~~ 一.向上转型 package com.sheepmu; class Animal { public void eat() { System.out.println("父类的 eating..."); } } class Bird extends Animal {
Java 父类引用指向子类对象
1.背景 面向对象的三大特点,继承,封装,多态。何为多态(Polymorphism)?接口的多种不同的实现方式就是多态(百度百科)。  PC上的一个USB接口,可以插入U盘,可以插鼠标,也可以连接手机,在PC上会有针对这些设备不同的驱动程序以实现连接,也就是谁使用谁去实现。 在程序语言中,通过子类继承父类,然后重写覆盖的方法,在创建对象时,将父类的引用指向子类的对象,就可以利用父类引用调
父类引用指向子类对象
父类引用子类对象,父类对象和子类对象之间的引用关系和区别
java 多态中的向上转型和向下转型
什么是向上转型? 答:子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是接口 向上转型的优势和劣势? 优势:1.减少重复代码,使代码变得简洁          2.提高系统的可扩展性 劣势:1.向上转型时子类单独定义的方法会丢失,例如下面,new Dog后,用对象来调用Dog中的run方法就找不到           2.父类不能引用子类
Java多态 向上转型 向下转型
封装、继承、多态是面向对象的三大特征,在Java中什么是多态? Java引用变量有两种类型,分别是编译时类型和运行时类型。何为编译时类型,编译时类型就是由声明该变量时使用的类型决定,而运行时类型是由实际赋给该变量的对象决定 的,也就是说如果编译时类型和运行时类型不一致时,就可能出现上面提到的多态。 我们看下下面的程序: [