gpt4 book ai didi

java - 如果 B 和 C 扩展同一个抽象类 A,我可以将 B 转换为 C 吗?

转载 作者:行者123 更新时间:2023-12-01 22:43:22 28 4
gpt4 key购买 nike

代码看起来像

public abstract class A {
protected int a;
public A() {}
public A(int _a) {
this.a = _a;
}
}

public class B extends A {
public B() {}
public B(int _a) {
super(_a + 1);
}
}

public class C extends A {
public C() {}
public C(int _a) {
super(_a);
}
public int getA() {
return this.a;
}
}

我所做的是将 B 转换为 C,这对我来说不起作用:

public class Main {
public static void main(String[] args) {
A b = new B(2);
System.out.println(((C)b).getA());
}
}

如果它们扩展相同的抽象类,我可以将 B 转换为 C 吗?

最佳答案

不,你不能。

比喻是:

public abstract class Animal {
protected int age;
public A() {}
public A(int _age) {
this.age = _age;
}
}

public class Bulldog extends Animal {
public Bulldog() {}
public Bulldog(int _age) {
super(_age + 1);
}
}

public class Cat extends Animal {
public Cat() {}
public Cat(int _age) {
super(_age);
}
public int getAge() {
return this._age;
}
}

你不会把一只 7 岁的斗牛犬假装成一只 7 岁的猫。 javac 和 PETA 都不会批准。

关于java - 如果 B 和 C 扩展同一个抽象类 A,我可以将 B 转换为 C 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25760748/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com