首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Exception >

static和override的区别

2014-01-26 
static和override的区别?final修饰的方法不能被覆写。 那static的方法(应该叫类方法吧)能不能被覆写呢?? sta

static和override的区别?

final修饰的方法不能被覆写。
那static的方法(应该叫类方法吧)能不能被覆写呢??
static的类呢,能在子类中override吗?

------解决方法--------------------------------------------------------
static 方法可以被覆写~~

内部类不存在覆盖关系.
------解决方法--------------------------------------------------------
静态方法可以被覆盖。
静态内部类也可以被覆盖。

class Father
{
Father()
{
System.out.println("Father constuctor");
}

public static void SF()
{
System.out.println("Father.SF()");
}

public static class InClass
{
public static int a=10;
}
}


class Son extends Father
{
Son()
{
System.out.println("Son constructor");
}

public static void SF()
{
System.out.println("Son.SF()");
}

public static class InClass
{
public static int a=12;
}

}

public class TFS
{
public static void main(String[] args)
{
Father f=new Father();
Son s=new Son();
System.out.println(Father.InClass.a);
Father.SF();
Son.SF();
System.out.println(Son.InClass.a);

}
}

------解决方法--------------------------------------------------------
static 虽然可以写成被override,但实际上却没有被override
你写几个例子就明白了
所以说不能.
------解决方法--------------------------------------------------------
其实static并没有被override,上面的例子看上去是被override了,但实际没有,因为 static 只归他自己的当前类。他是隐藏的。
static静态的不能被覆写,也不能重栽,所以它也不能实现多态。
为什么呢?
因为静态的是隐藏的,它只属于当前类用。所以楼主切记。
无论是什么,只要是静态的,就符合此条件。
如:
class father{

public static void go(){system.out.println("fath");}
}
class son extend father{
public void go(){system.out.println("son");
}
public class example{
public static void main(String[] args)
{
Father f=new Father();
Son s=new Son();
f.go();//他输出的是fath
s.go(); //输出 son
} //他们自己输出自己的。
}
还有楼主需要记住一点,覆盖和重载判断标准是函数头,和参数表。
并不是象: static,void ,private...等等。



------解决方法--------------------------------------------------------
同楼上的。。。。

        

热点排行