静态方法不可以被重写(override)

今天看了几个题目,感觉基础比较扎实了,但是结果…话不多说记录一下.
一: 静态方法可以被重写吗?
静态的⽅法可以被继承,但是不能重写。如果⽗类中有⼀个静态的⽅法,⼦类也有⼀个完全一样的方法,那么该⼦类的⽅法会把⽗类的⽅法隐藏,⽽不是重写。通俗的讲就是⽗类的⽅法和⼦类的⽅法是两个没有关系的⽅法,具体调⽤哪⼀个⽅法是看是哪个对象的引⽤;这种⽗⼦类⽅法也不在存在多态的性质。《Java编程思想》中这样提到“只有普通的方法调用可以是多态的”。

public class BeanInfoTest {
    public static void main(String[] args) {
        Father son = new Son();
        son.say();
    }
}

class Father{
    public static void say(){
        System.out.println("I am father");
    }
}

class Son extends Father{
    public static void say(){
        System.out.println("you are son");
    }
}

上面的执行结果是"I am father",也就是Father类型的引用调用的.

二: 抽象的(abstract)方法是否可同时是静态的(static)?
不能,抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。

补充:

接口中方法是 public abstract
接口中变量是 public static final

抽象类中可以定义构造器,接口不能;
在jdk1.8中,接口里可以有静态方法和default方法,接口中这两种方法必须要有body, ----------------但此时方法修饰符 默认public abstract + static 和上面的问题二冲突了

  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值