java向上转型什么意思啊?

来源:百度知道 编辑:UC知道 时间:2024/09/23 16:21:11
我看好多人都说
A 是子类 B是父类
A a=B();
B b=(B)a;

我为什么要用向下转型呢 ?什么时候用向下转型?举个列子呗
还有啊
B b=new B(); 这样 直接用里面的功能不就行了么。

那样麻烦事为什么?
弄错了 是向上转型 不好意思

不对 你们说的那个我知道 我的意思是说父类没有功能 要用 子类的功能 B b=(B)a; 解释这个

子类角度看
当你要用的功能子类没有而父类有时,你就有需要向上转型
父类角度
当你要用的功能父类没有而子类有时,你就有需要向下转型

说句实话,向上转型根本没有什么意义!
既然A是B的子类,那么A可以拥有B的所有方法,转换真是多此一举。
而且根据里氏代换原则,子类型必须能够替换掉他的父类型,将子类转换成父类没有意义。

可参考面向对象的设计模式:http://mybluesky99.javaeye.com/blog/384298

当你要父类转发成子类是就要向下转型
向下转型是为了代码扩展行
看这个例子就明白了
//父类
public class Animal {
public void print(){
System.out.println("动物");
}
public static void main(String[]args){
Brute b=new Brute();
b.zootaxy(new Dao());
b.zootaxy(new Cat());
b.zootaxy(new Pig());
//如果你想扩展什么直接继承Animal b.zootaxy(new 扩展类());
}
}
class Dao extends Animal{
public void print(){
System.out.println("狗");
}
}
class Cat extends Animal{
public void print(){
System.out.println("猫&q