日期:2014-05-20 浏览次数:20688 次
class SuperClass { public SuperClass() { } public SuperClass(String s) { s = " "; } public void doSomething() { System.out.println("这是SuperClass输出的!"); } public void doSth1() { // TODO Auto-generated method stub } } class SubClass1 extends SuperClass { public void doSomething() { System.out.println("这是SubClass1输出的!"); } public void doSth1() { System.out.println("这是doSth1输出的!"); } } class SubClass2 extends SuperClass { public void doSomething() { System.out.println("这是SubClass2输出的!"); } public void doSth1() { System.out.println("这是doSth2输出的!"); } } public class testLayer { public static void main(String arge[]) { SuperClass x = new SuperClass(); SuperClass y = new SubClass1(); SuperClass z = new SubClass2(); x.doSomething(); y.doSomething(); z.doSomething(); y.doSth1(); z.doSth1(); } }
------解决方案--------------------
public static void main(String arge[]) { SuperClass x = new SuperClass(); SuperClass y = new SubClass1()f"); try{ fff b=new fff(); b.method(); } catch(NoSuchMethodException e){ e.printStackTrace(); } } } class fff{ }
------解决方案--------------------
SuperClass z = new SubClass2();
------解决方案--------------------
你重写父类的方法,用父类的引用是可以调用的.而且调用的是子类里的方法,父类的方法被屏蔽了.但是父类看不到子类里的方法,所以父类的引用指向子类的对象,也调用不到子类里的方法的.只能子类自己的对象调用自己的方法.
class SuperClass { public SuperClass() { } public SuperClass(String s) { s = " "; } public void doSomething() { System.out.println("这是SuperClass输出的!"); } } class SubClass1 extends SuperClass { public void doSomething() { System.out.println("这是SubClass1输出的!"); } public void doSth1() { System.out.println("这是doSth1输出的!"); } } class SubClass2 extends SuperClass { public void doSomething() { System.out.println("这是SubClass2输出的!"); } public void doSth2() { System.out.println("这是doSth2输出的!"); } } public class testLayer { public static void main(String arge[]) { SuperClass x = new SuperClass(); SuperClass y = new SubClass1(); SuperClass z = new SubClass2(); SubClass1 a = new SubClass1(); SubClass2 b = new SubClass2(); x.doSomething(); y.doSomething();//父类的方法被屏蔽了,调用的是子类里的方法 z.doSomething();//父类的方法被屏蔽了,调用的是子类里的方法 //y.doSth1();这里是不可见的,所以不能调用 //z.doSth2();这里是不可见的,所以不能调用 a.doSth1(); b.doSth2(); } }