【发布时间】:2021-01-29 05:05:05
【问题描述】:
在研究界面时,我遇到了这种奇怪的行为 当我运行这个
int num=20;
public void sound();
public void eat();
}
class Dog implements Animal{
public void sound(){
System.out.println("Wooof!!!!!!!");
}
public void eat(){
System.out.println("Food");
}
}
public class Main{
public static void main(String[]args){
Dog dog=new Dog();
dog.sound();
dog.eat();
System.out.println(Dog.num);
//System.out.println(Dog.num1);
}
}
如果我声明一个具有相同名称的无静态变量,即 num 与这样的接口中的变量相同,它运行良好
interface Animal{
int num=20;
public void sound();
public void eat();
}
class Dog implements Animal{
int num=10;
public void sound(){
System.out.println("Wooof!!!!!!!");
}
public void eat(){
System.out.println("Food");
}
}
public class Main{
public static void main(String[]args){
Dog dog=new Dog();
dog.sound();
dog.eat();
System.out.println(Dog.num);
//System.out.println(Dog.num1);
}
}
它给出了这个错误Main.java:22: error: non-static variable num cannot be referenced from a static context
我的问题是,由于接口中的一个是静态的并且是类级别的,为什么当我声明一个非静态实例级别变量时子类,即狗编译失败。
【问题讨论】:
标签: class inheritance interface static non-static