3楼: 你可以在子类中写一个和父类同样的private方法 创建子类的对象调用 向上转成父类调用 是不是能写成这样: class A { private void Fun(){ System.out.println("A");} } class B extends A { private void Fun(){ System.out.println("B");} public static void main(String args[]) { A xx = new B(); xx.Fun(); }
你可以想象一下,有时候想象也是一种好的学习方法 class B extends A你可以这样想想: B是一个小偷,专门偷A的Fun()这个方法,但是A为Fun()加了一个保险箱private,这样B就偷不到了!!!只能干着急!!! 如果不加private这个保险箱,而是使用public这样B就偷到了Fun()这个方法。这样他就可以用Fun()了!!!
不过不是不能使用,只是不能直接访问。可以通过父类提供的public方法来使用。
创建子类的对象调用
向上转成父类调用
看看效果就明白了
呵呵
import java.lang.reflect.Method;class TestA{
private void display(){
System.out.println("B");
}
}public class TestB extends TestA{ //去掉再执行下
private void display(){
System.out.println("B");
}
public static void main(String[] args) {
for(Method m: TestA.class.getDeclaredMethods()){
System.out.println(m.getName());
}
for(Method m: TestB.class.getDeclaredMethods()){
System.out.println(m.getName());
}
}
}
你可以在子类中写一个和父类同样的private方法
创建子类的对象调用
向上转成父类调用 是不是能写成这样:
class A
{
private void Fun(){ System.out.println("A");}
}
class B extends A
{
private void Fun(){ System.out.println("B");}
public static void main(String args[])
{
A xx = new B();
xx.Fun();
}