向上转型为什么不直接创建子类对象

class ADCarry {

    public void duiXian() {
        System.out.println("这是父类的对线方法");
    }

    public void faYu() {
        System.out.println("这是父类的发育方法");
    }


}

class Uzi extends ADCarry {
    public void duiXian() {
        System.out.println("污渍下路三人路");
    }

    public void faYu() {
        System.out.println("污渍一人吃三路");
    }
}

class Bang extends ADCarry {

    public void duiXian() {
        System.out.println("Bang对线稳住");
    }

    public void faYu() {
        System.out.println("Bang不抢队友资源");
    }


}
public static void show(ADCarry adCarry) {
        adCarry.duiXian();
        adCarry.faYu();
    }
//这两种写法结果都一样 那么第二种有什么意义呢?
Uzi uzi = new Uzi();
show(uzi);

ADCarry uzi2 = new Uzi();
show(uzi2);

这种引用和指向都是子类的方式比引用父类指向子类差在哪?

阅读 2.8k
2 个回答

有啥好处不好说
坏处是访问不到子类的字段和方法
所以基本无意义

好处也有,坏处也有。但很明显,好处很大,而坏处能够直接感应到,在编码中就能解决。
好处:依赖倒置。依赖于抽象而不依赖于具体。这也就是接口的好处,通俗来说就是订规则确不实现,依赖于规则执行,这样的好处就是,无论你用何种方式实现都可以,我只需要达到某种目的即可。在维护的时候优势是巨大的。如果依赖具体实现,本可以修改一处,确需要修改很多处。
坏处:无法使用子类特有的方法。不过在编码中就能感觉到,所以这种错误是能够在编码中展现出来的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏