【发布时间】:2016-08-09 05:14:18
【问题描述】:
我正在尝试从其子类访问父类中的变量,但我不知道如何使用它。
父类是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重新声明了,有必要吗?我也想在孩子中使用runCmd()。如果我在子类中使用 runCmd(),我会收到错误消息“错误:方法声明无效;需要返回类型”。
在子类 (SwitchTempSensor) 中使用变量和类的正确方法是什么?
【问题讨论】:
-
没有什么能阻止你在子类中使用
runCmd(),但听起来你希望父类使用子类的变量,就好像它们是覆盖一样,而不是如中所述你的问题。但是,Java 中没有变量覆盖。可能cmd等变量应该是构造函数初始化的实例变量吧?不清楚你在问什么。 -
如果我在我的子类中使用 runCmd(),我会收到错误消息“错误:方法声明无效;需要返回类型”。
-
所以你遇到了编译错误?您应该能够自己解决这些问题。你实际上并没有澄清你的帖子。
标签: java oop abstract-class