gpt4 book ai didi

java - 将变量传递给一个子类

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:53:33 25 4
gpt4 key购买 nike

我不是一名编程人员,接触的代码很少,但我想修改现有的代码库。我已经大大简化了我在下面使用的代码。如果我可以提供任何进一步的信息,或者这根本没有意义,请告诉我!词汇很难。 :)

在 ClassA 中,我正在实例化 ClassB 的子类。我想要进行的更改需要一个新变量“myVar”(在 ClassA 中设置)可用于子类 ClassC 而不是子类 ClassD。使该变量可用于 ClassC 的最合适方法是什么?

A 类:

public class ClassA {
private String myVar = "hi";
private String myStuff = "bye";
private int myOption = 1;

private String getMyClass(String myStuff) throws Exception {
final MyClassChoice myClass = getMyClassChoice(myOption);
return myClass.getResponse(myStuff);
}

private MyClassChoice getMyClassChoice(myOption) {
switch(myOption) {
case 1:
return new ClassC();
case 2:
return new ClassD();
}
}
}

B 类:

public class ClassB {
public abstract String getResponse(String myStuff) throws IOException;
}

C 类:

public class ClassC extends ClassB {
// do stuff with myStuff
// do stuff with myVar
}

D级:

public class ClassD extends ClassB {
// do stuff with myStuff
}

最佳答案

你要么在实例化对象时将它传递给构造函数,然后将它保存在一个实例变量中,

public class ClassA {
// ...
private MyClassChoice getMyClassChoice(myOption) {
switch(myOption) {
case 1:
return new ClassC(myVar);
case 2:
return new ClassD();
}
}
}

public final class ClassC extends ClassB {

private String myVar;

// constructor:
public ClassC(String myVar) {
this.myVar = myVar;
}

// do stuff with myStuff
// do stuff with myVar
private void doStuff() {
System.out.println(myVar);
}
}

或者你在使用的时候传给方法,

public final class ClassA {
// ...
public void someMethodUsingClassCDoStuff() {
myClass.doStuff(myVar);
}
}

public final class ClassC extends ClassB {

// do stuff with myStuff
// do stuff with myVar
public void doStuff(String myVar) {
System.out.println(myVar);
}
}

关于java - 将变量传递给一个子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37668666/

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