当然是调用的 B,C 的方法! 不过你应该使用 interface 的! 还有就是,你的例子实在是错误太多了! 改正如下: public class M { static class A { public void doSomething() { System.out.println("do a"); } } static class B extends A { public void doSomething() { System.out.println("do b"); } } static class C extends A { public void doSomething() { System.out.println("do c"); }
} public static void main(String[] args) { A obj=new B(); A obj1=new C(); obj.doSomething(); obj1.doSomething(); } }
稍微改改了程序! public class M { static class A { public void doSomething() { System.out.println("do a"); } public static void doStatic() { System.out.println("do static a"); } } static class B extends A { public void doSomething() { System.out.println("do b"); } public static void doStatic() { System.out.println("do static b"); } } static class C extends A { public void doSomething() { System.out.println("do c"); } public static void doStatic() { System.out.println("do static c"); }
} public static void main(String[] args) { A obj=new B(); A obj1=new C(); obj.doSomething(); obj1.doSomething(); obj.doStatic(); obj1.doStatic(); } } 发现 obj,obj1 调用了 Class A 的 doStatic 方法! 大家想得到吗????----我是真的很诧异!
2.你继承后,并重新书写父类的方法,jvm自动多态处理。
不过你应该使用 interface 的!
还有就是,你的例子实在是错误太多了!
改正如下:
public class M
{
static class A
{
public void doSomething()
{
System.out.println("do a");
}
} static class B extends A
{
public void doSomething()
{
System.out.println("do b");
}
} static class C extends A
{
public void doSomething()
{
System.out.println("do c");
}
}
public static void main(String[] args)
{
A obj=new B();
A obj1=new C();
obj.doSomething();
obj1.doSomething();
}
}
public class M
{
static class A
{
public void doSomething()
{
System.out.println("do a");
}
public static void doStatic()
{
System.out.println("do static a");
}
} static class B extends A
{
public void doSomething()
{
System.out.println("do b");
}
public static void doStatic()
{
System.out.println("do static b");
}
} static class C extends A
{
public void doSomething()
{
System.out.println("do c");
}
public static void doStatic()
{
System.out.println("do static c");
}
}
public static void main(String[] args)
{
A obj=new B();
A obj1=new C();
obj.doSomething();
obj1.doSomething();
obj.doStatic();
obj1.doStatic();
}
}
发现 obj,obj1 调用了 Class A 的 doStatic 方法!
大家想得到吗????----我是真的很诧异!
{
static class A
{
.........对嘛??我怎么感觉不对...不是一个类中不能包含别的类嘛???你们说说???
奇怪...?
Inner classes( 内隐类)
!!!
sigh