class Demo
{
class A
{
private void print()
{
System.out.println("A、private()");
}
}
class B extends A
{
private void print()
{
System.out.println("B、private()");
}
}
public static void main(String[] args)
{
B b = new B();
}
}
编译错误:Noname7.java:19: 无法从静态上下文中引用非静态 变量 this
B b = new B();
这是什么意思?A中没有定义静态变量啊,这个this怎么冒出来的,怎么理解这个错误提示?我将main语句中的static删除后编译通过
但是运行Demo后抛出异常Exception in thread "main" java.lang.NoSuchMethodError:main
于是乎,我修改代码 定义一个类C,在C中对B实例化并调用B的private方法
class Demo
{
class A
{
private void print()
{
System.out.println("A、private print()");
}
}
class B extends A
{
private void print()
{
System.out.println("B、private print()");
}
}
public void ab()
{
B b = new B();
b.print();
System.out.println("Demo、 void ab()") ;
}
public static void main(String[] args)
{
Demo d = new Demo();
d.ab();
}
}
结果:打印:B、private
Demo、void ab(); 这是不是可以证明父类的private其实是可以被子类重写的,但是却不能在静态的函数中对子类进行实例化呢?