gpt4 book ai didi

java - 将父类放入扩展类中

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

我对扩展类有疑问。

这是类(class):

class A{
}

class B extends A{
}

现在的问题是我有一个返回 A 的方法,如下所示:

public A doSomthing(){
}

现在我尝试做这样的事情:

public static void main(){
B b = new B();
b = doSomething();
}

但是好像不行。有什么办法可以解决这个问题吗?

我唯一想到的就是拥有这样的东西:

class B extends A{
public B(A a){
copy all the fields from A to B}
}

然后执行:

A a = new A();
a = doSomthing();
B b = new B(a);

有更好的选择吗?

最佳答案

从根本上来说,我认为您错过了赋值运算符的作用。本声明:

b = doSomething();

b 的值更改为 doSomething() 方法返回的值。它根本不依赖于 b 的现有值。。同样,当你有:

A a = new A();
a = doSomthing();

...这样写会更有意义:

A a = doSomething();

现在,如果您需要基于 A 的实例创建 B 的实例,那么这样写可能很有意义:

A a = doSomething();
B b = new B(a);

或者只是:

B b = new B(doSomething());

...但是您需要了解何时使用现有值以及何时不使用现有值。

通常我发现,当我需要做类似的事情时,实际上使用组合比继承更好 - B 应该引用现有的 A 而不是扩展 A。这当然是需要考虑的事情,但如果没有具体的例子,我们就不能确定。

关于java - 将父类放入扩展类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25550301/

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