Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在抽象类或接口上进行引用时,如何访问子对象的变量?_Java_Inheritance_Adapter - Fatal编程技术网

Java 在抽象类或接口上进行引用时,如何访问子对象的变量?

Java 在抽象类或接口上进行引用时,如何访问子对象的变量?,java,inheritance,adapter,Java,Inheritance,Adapter,我正在学习编码模式,而我在学习适配器模式时遇到了困难,因为它使用liskov。我不明白的是,当引用抽象类或接口时,如何从子级访问私有变量 public class Aplication { public static void main(String[] arguments) throws IOException { Input in; Output out; out=new PrintConsole(); in= new ConsoleAdapter();

我正在学习编码模式,而我在学习适配器模式时遇到了困难,因为它使用liskov。我不明白的是,当引用抽象类或接口时,如何从子级访问私有变量

public class Aplication {

public static void main(String[] arguments) throws IOException {

    Input in;
    Output out;
    out=new PrintConsole();
    in= new ConsoleAdapter();
    ext.print(in.catch());  
}
这是我的界面

public interface Input {

public void catch();}
这是我的孩子班

public class ConsoleAdapter implements Input{

InputConsole Input;
private int num;

public ConsoleAdapter() {

    Input=new ConsoleAdapter();
}

@Override
public void catch() {

    num=Input.cathInteger();

}

public int getNum() {
    return num;
}

public void setNum(int num) {
    this.num = num;
}

因此,如果不使用静态变量,我如何从主控制台中调用var num呢?

将getNum()方法添加到您的接口输入中,然后在您的ConsoleReadapter类中覆盖它或声明为ConsoleReadapter。

您必须问自己的第一个问题是:为什么要访问var
num
?如果您能为这个问题提供一个很好的答案,那么在这种情况下,您对界面
Input
的使用是不正确的(因为它不提供对变量
num
)的访问)。Input interface只定义了为几种输入方式实现的方法,例如通过控制台、通过GUI、,所以在这个程序中,我想调整控制台的输入,将字符串转换成整数,并将其交给计算器类。我不想为每种类型的输入都有几个方法,比如double、float、string、int等。所以我说让我们使用一个void,这样它就可以修改consoleAAPTER中num的值,我试图创建一个返回方法,但我遇到了一个问题,如果我定义它string,它只会为每个扩展或实现父类的类返回sting。如果我在中声明为ConsoleAdapter,它将不会使用liskov,这不是我的想法:(