Java 在抽象类或接口上进行引用时,如何访问子对象的变量?
我正在学习编码模式,而我在学习适配器模式时遇到了困难,因为它使用liskov。我不明白的是,当引用抽象类或接口时,如何从子级访问私有变量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();
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,这不是我的想法:(