static方法可以被重写(覆盖)吗

发布网友 发布时间:2022-04-20 02:51

我来回答

3个回答

热心网友 时间:2023-07-11 20:06

首先,static 修饰的方法可以去复写,但不会覆盖父类的方法。

重写:只有继承了父类的,才可以。 它具有以下特点:
1.参数列表必须与被重写的方法参数列表一致。
2.返回类型必须与方法中的返回类型一致。
3.访问级别的 *不可以比父类中的强。(可以比他弱)
重载:
在同一一个类中,参数与返回的只不同,方法名相同。
静态的:

由于静态的在内存空间只有一份,所有不可以被覆盖.

子类定义和父类的静态,其实是在子类中隐藏父类的静态方法..

子类隐藏父类的静态方法和子类覆盖父类实例方法还是有区别的.区别在:运行时..JAVA 虚拟机把静态方法和所属的类绑定,而把实例方法和所属的实例绑定...

举个例子让你更明白;

======
class Father{
void method(){
System.out.println("method of father");
}

static void staticMethod(){
System.out.println("static method of father");
}
}

public class Son extends Father{
void method(){
System.out.println("method of son");
}

static void staticMethod(){
System.out.println("static method of son");
}

public static void main(String args[]){
Father son1 = new Son();//声明为Father类,son1静态方法和Father类绑

son1.method();
son1.staticMethod();

Son son2 = new Son();
son2.method();
son2.staticMethod();
}
}

============
method of son
static method of father
method of son
static method of son

热心网友 时间:2023-07-11 20:07

不能复写,如下验证:
1,public class TT {

public static void getName(){
System.out.println("TT");
}
public static void main(String[] args) {
TT tt = new T();
tt.getName();

}

}

class T extends TT{

public static void getName(){

System.out.println("T");
}

}如果打印的是T则说明能复写。但实际上打印的是TT,说明不能复写。
方法2,在子类的public static void getName()中
写上super.getName();看是不是编译不通过。通过说明可复写。
方法3,eclipse中可以自动生成复写方法,在子类中如果可以就说明可以复写,如果不能自动生成复写方法,说明不能复写。
我的结论是不能复写。
你自己也试着验证看看吧。

热心网友 时间:2023-07-11 20:07

可以,staitc表示静态的,是在别的类调用后不能直接调用方法的意思。
final修饰的方法不能复写
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com