Java那点儿事3——静态的方法

在Java中静态方法的使用也是再普遍不过的了,静态的对象与方法的优点不用我多说了,你一定也是知道。 你会问那笔者在这里要说什么呢?笔者反问:你知道静态方法能被重写么?
或许你知道静态方法不能被重写,那么你能确定下面这个例子能编译通过么?

class Animal{

static void method(){
System.out.println("Animal");
}
}

public class Dog extends Animal{

static void method(){
System.out.println("Dog");
}

public static void main(String[] args){
Animal[] animals = { new Animal() , new Dog };
for(int i=0;i<animals.length;i++){
animals[i].method();
}
}
}


能确定么?去试试吧,这段代码真的能够编译通过,我不骗你的。不是说静态方法不能被重写么?确实不能重写,其实method的这个方法根本就不是重写,在这种情况下他叫做重定义。
(上面的代码结果为 Animal Animal)

重新来编写一下main方法
public static void main(String[] args){
Animal a = new Animal();
Dog d = new Dog();

a.method();
b.method();
}

修改之后,结果是什么呢?
结果是
Animal
Dog
他是重写么?Animal和Dog中存在两个不同的method方法的副本。在继承的时候静态方法也是会被继承的,如果在子类未对其重定义那么会调用超类的方法,如果重定义,超类的方法会被隐藏。最后观点:静态方法不能被重写,更确切的说静态方法不会被重写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值