class A
{
private void fun()
{
}
};class B extends A
{
public void fun()
{
System.out.println("b");
}
public static void main(String args[])
{
A a;
a=new B();
a.fun();
}
};为什么会错呢?明明是覆盖掉了,应该为多态,调用B里的fun(),我那里理解错误了?
{
private void fun()
{
}
};class B extends A
{
public void fun()
{
System.out.println("b");
}
public static void main(String args[])
{
A a;
a=new B();
a.fun();
}
};为什么会错呢?明明是覆盖掉了,应该为多态,调用B里的fun(),我那里理解错误了?
结论就是只有非private方法才可以被覆盖.
{
private void fun()
{
}
};class B extends A
{
public void fun()
{
System.out.println("b");
}
public static void main(String args[])
{
A a;
a=new B();
}
};这段代码编译通过,也就是说fun被覆盖了,如何解释?
{
final void fun()
{
}
};class B extends A
{
public void fun()
{
System.out.println("b");
}
public static void main(String args[])
{
A a;
a=new B();
a.fun();
}
};编译时不通过
class A
{
private void fun()
{
}
};class B extends A
{
public void fun()
{
System.out.println("b");
}
public static void main(String args[])
{
A a;
a=new B();
a.fun();
}
};
编译通过,因为是private是隐显的fianl为什么会出现两种结果呢?