gpt4 book ai didi

java - 如何在父子之间使用公共(public)变量?

转载 作者:行者123 更新时间:2023-12-02 03:26:13 26 4
gpt4 key购买 nike

我试图从子类访问父类中的变量,但我不知道如何使用它。

父类是ATempSensor:

public abstract class ATempSensor {  // abstract=can have children inherit
// from this class, but no instantiation.
static String cmd ; // command to send to shell.
static String cmd_result ; // Line returned by command.
static int cmd_number ; // if command just returned a number, here it is.

public void runCmd() {
try {
Runtime run = Runtime.getRuntime(); // get runtime shell.
Process pr = run.exec(cmd); // start command.
pr.waitFor() ; // wait for command to finish.
BufferedReader buf = new BufferedReader // get output from command.
( new InputStreamReader( pr.getInputStream() ) );
cmd_result = buf.readLine();
cmd_number = Integer.parseInt(cmd_result);
}
catch (Exception e ) { // can get exceptions for exec, waitfor, parseInt
}
}
}

子类是SwitchTempSensor:

package tempsensor ;                    // added to define membership of package.
import java.io.* ;

public class SwitchTempSensor extends ATempSensor{
//--- class member data (variables) are called fields.

static String cmd= "ousb io portb ";
runCmd()
}

两个 java 文件都位于名为“tempsensor”的同一目录中,Mymain.java 位于 tempsensor 之外。目录看起来像 -

Mymain.java
|
tempsensor
|----------SwitchTempSensor.java
|----------ATempSensor.java

在子类中,我尝试使用名为 cmd 的字符串。我已经通过重新声明static String来使用,有必要吗?我还想在 child 中使用 runCmd() 。如果我在子类中使用 runCmd(),则会收到错误消息“错误:方法声明无效;需要返回类型”。

在子类(SwitchTempSensor)中使用变量和类的正确方法是什么?

最佳答案

我不太确定你想做什么。但我认为您需要的是 SwitchTempSensor 类中的构造函数。

首先,没有必要再次声明cmd。这就是继承的全部意义!

在类作用域中,你不能调用方法,所以你不能做这样的事情:

class SwitchTempSensor {
runCmd();
}

方法调用必须包含在方法中。因此,请删除 SwitchTempSensorcmd 的“重新声明”以及 runCmd() 调用。

必须将方法调用和变量初始化放在方法或构造函数中。如果将其放入构造函数中,则该变量将在创建 SwitchTempSensor 对象时初始化:

public SwitchTempSensor() {
cmd = "ousb io portb ";
runCmd();
}

你可以这样使用它:

new SwitchTempSensor();

您也可以将其放入方法中:

public void someMethod() {
cmd = "ousb io portb ";
runCmd();
}

你可以这样使用它:

SwitchTempSensor sensor = new SwitchTempSensor();
sensor.someMethod();

关于java - 如何在父子之间使用公共(public)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38842565/

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