无法从上下文中引用非静态变量-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

无法从上下文中引用非静态变量

蛮大人123 2016-05-31 15:50:27 1171
public class TestExtend {
class A {
protected void print(String s){
System.out.println(s);
}
A() {print("A()");}
public void f() {print("A:f()");}
}
class B extends A {
B() {print("B()");}
public void f() {print("B:()");}
}
public static void main (String[] args) {
B b = new B(); --错误行,这行代码有问题
b.f();
}
}
分享到
取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 19:22:07

    静态内部类的用法,你想要在类的静态方法中使用内部类的话,那么需要将内部类定义成静态的,不然是找不到内部类的,因为不声明static的话,内部类只会在TestExtend对象创建之后才会生成。你可以试一下如下的代码:

     public class TestExtend {
        static class  A {
            protected void print(String s){
                System.out.println(s);
            }
            A() {print("A()");}
            public void f() {print("A:f()");}
        }
        static class  B extends A {
            B() {print("B()");}
            public void f() {print("B:()");}
        }
        public static void main (String[] args) {
            B b = new B();
            b.f();
        }
    }
    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章