向上转型为什么不直接创建子类对象
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);
这种引用和指向都是子类的方式比引用父类指向子类差在哪?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有啥好处不好说
坏处是访问不到子类的字段和方法
所以基本无意义
好处也有,坏处也有。但很明显,好处很大,而坏处能够直接感应到,在编码中就能解决。
好处:依赖倒置。依赖于抽象而不依赖于具体。这也就是接口的好处,通俗来说就是订规则确不实现,依赖于规则执行,这样的好处就是,无论你用何种方式实现都可以,我只需要达到某种目的即可。在维护的时候优势是巨大的。如果依赖具体实现,本可以修改一处,确需要修改很多处。
坏处:无法使用子类特有的方法。不过在编码中就能感觉到,所以这种错误是能够在编码中展现出来的。