Ich versuche, auf die Variablen in einer Elternklasse von seinem Kind zuzugreifen, aber ich weiß nicht, wie man es benutzt.Wie verwenden Sie die öffentlichen Variablen in Eltern zu Kind?
Die Elternklasse ist 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
}
}
}
Das Kind Klasse ist SwitchTempSensor
:
Beide Java-Dateien im selben Verzeichnis sind genannt "TEMPSENSOR", Mymain.java außerhalb TEMPSENSOR ist. Verzeichnis Blick wie-
Mymain.java
|
tempsensor
|----------SwitchTempSensor.java
|----------ATempSensor.java
In der Kind-Klasse, ich versuche die Zeichenfolge cmd
genannt zu verwenden. Ich habe verwendet, indem Sie static String
redefinieren, ist es notwendig? Ich möchte auch die runCmd()
in Kind verwenden. Wenn ich runCmd() in meiner Kind-Klasse verwende, habe ich den Fehler "error: invalid method declaration; Rückgabetyp required" erhalten.
Was ist der richtige Weg, um Variable und Klasse in Kind-Klasse (SwitchTempSensor
) zu verwenden?
Nichts hält Sie davon ab, 'runCmd()' in der Kindklasse zu verwenden, aber es klingt so, als ob die Elternklasse die Variablen der Kindklasse als Überschreibungen verwenden soll, nicht umgekehrt wie in Ihrer Frage angegeben. In Java gibt es jedoch kein Überschreiben von Variablen. Möglicherweise sollten 'cmd' und andere Variablen Instanzvariablen sein, die vom Konstruktor initialisiert wurden? Unklar, was du verlangst. – EJP
Wenn ich runCmd() in meiner Kindklasse verwende, habe ich den Fehler "error: invalid method declaration; Rückgabetyp required" erhalten. –
Sie haben also einen Kompilierungsfehler? Es wird erwartet, dass Sie diese selbst beheben können. Sie haben Ihren Beitrag nicht wirklich geklärt. – EJP