新宿 成田:在java中(非)static方法等的覆盖问题?

来源:百度文库 编辑:高校问答 时间:2024/03/28 21:17:23
static方法可否在子类中覆盖为非static的。
非static方法可否在子类中覆盖为static的。

同样对于static变量、非static变量又有什么规定呢?

都不能,给你个例子自己编译一下试试就知道了。
class Parent
{
public void nonStaticMethod()
{
System.out.println("Parent's nonStatic method is called");
}
public static void staticMethod()
{
System.out.println("Parent's static method is called");
}
}
class Child extends Parent
{
public static void nonStaticMethod()
{
System.out.println("Child's static method is called");
}
public void staticMethod()
{
System.out.println("Child's non static method is called");
}
}
public class Test
{
public static void main(String[] args)
{
Parent p1=new Parent();
Parent p2=new Child();
Child c=new Child();
System.out.print("Parent.static: ");
Parent.staticMethod();
System.out.print("p1.static: ");
p1.staticMethod();
System.out.print("p2.static: ");
p2.staticMethod();
System.out.print("p1.nonStatic: ");
p1.nonStaticMethod();
System.out.print("p2.nonStatic: ");
p2.nonStaticMethod();
System.out.print("Child.static: ");
Child.staticMethod();
System.out.print("c.static: ");
c.staticMethod();
System.out.print("c.nonStatic: ");
c.nonStaticMethod();
}
}