Java技能点--@Override解释

点此查看全部文字教程、视频教程、源代码

1. 概述

有时候会很奇怪的发现哦,@Override这个注解有点不讲道理,有时候写它也没问题,不写他也没问题,都不会有错误或者警告信息。

对于天生喜欢抽象和联想的程序猿来说,很容易产生这样的联想,Override的意思不是覆盖么,加上@Override这个注解的意思应该是覆盖父类的方法吧,哈哈,天才!

然而不是的,用个例子说明下:

2. @Override用与不用,都会覆盖

不用的示例:

package org.maoge.annotationdemo;
//用于演示的父类
public class Father {
	public void sayHello(){
		System.out.println("Father say hello");
	}
}
package org.maoge.annotationdemo;

//用于演示的子类
public class Son extends Father{
	//注意,此处覆写了sayHello,没用@Override,也没有任何错误提示和警告信息
	public void sayHello(){
		System.out.println("Son say hello");
	}
	public static void main(String[] args) {
		Father son=new Son();
		son.sayHello();//输出Son say hello,覆盖成功
	}
}

用的示例,父类不变

package org.maoge.annotationdemo;
//用于演示的子类
public class Son extends Father{
	//注意,此处覆写了sayHello,用了@Override,同样没有任何错误提示和警告信息
	@Override
	public void sayHello(){
		System.out.println("Son say hello");
	}
	public static void main(String[] args) {
		Father son=new Son();
		son.sayHello();//输出Son say hello,同样覆盖成功
	}
}

3. 实践是检验真理的唯一标准,@Override不是那么玩的

@Override并不是表示该方法去覆盖父类方法,而是仅仅提供一种提示功能,保证加了@Override肯定覆盖了父类的方法,以免程序猿觉得自己明明覆盖了,咋还有这种低级错误发生。说的太复杂,一个例子就清楚了。

package org.maoge.annotationdemo;
public class Son extends Father{
	@Override
	public void say_hello(){//报错:The method say_hello() of type Son must override or implement a supertype method
		System.out.println("Son say hello");
	}
	public static void main(String[] args) {
		Father son=new Son();
		son.sayHello();//输出Son say hello,同样覆盖成功
	}
}

到了展示英文功力的时候了,The method say_hello() of type Son must override or implement a supertype method的意思是,这个叫say_hello的方法啊,它是Son类的方法啊,它啊,必须滴覆盖或者落实一个它老爸的方法。

到了这里就很明确了,用了@Override的方法,必然是一个覆盖了父类的方法,不然编译器都不让你过。儿子得保证把爸爸的技能学到手,心里有数才能出师。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值