/*俺的菜鸟笔记
Java 中的覆盖@Override注解 写与不写的一点点理解
一般来说,写与不写没什么区别,JVM可以自识别
写的情况下:即说明子类要覆盖基类的方法,基类必须存在方法
(控制类型public,protected,返回值,参数列表类型)与子类方法完成一致的方法,否则会报错(找不到被Override的方法)。
在不写@Override注解的情况下,当基类存在与子类各种条件都符合的方法是即实现覆盖;
如果条件不符合时,则是当成新定义的方法使用。
所以如果想覆盖基类方法时,最好还是写上@Override注解,这样有利于编译器帮助检查错误
*/
//示例:
public class OverrideTest extends Test{
@Override//此处写与不写都能覆盖基类的t(String)方法
public void t(String s){
System.out.println("OverrideTest.t(String):" + s);
}
//此处不能写@Override注解,因为方法参数类型与基类的t2方法的参数类型不同
//所以此处只能新定义了一个t2(float)方法,并不能实现覆盖
public void t2(float f){
System.out.println("OverrideTest.t2(float):" + f);
}
public static void main(String[] args){
OverrideTest ot = new OverrideTest();
ot.t("china34420");
ot.t2(1.0f);
ot.t2(1);
ot.t3();
}
}
/*输出:
OverrideTest.t(String):china34420
OverrideTest.t2(float):1.0
Test.t2(int):1
OverrideTest.t(String):override
*/
class Test{
public void t(String s){
System.out.println("Test.t(String):" + s);
}
public void t2(int i){
System.out.println("Test.t2(int):" + i);
}
public void t3(){
t("override");
}
}
分享到:
相关推荐
Java注解(Annotation)是Java语言的一个重要特性,它为元数据提供了强大的支持。元数据是关于数据的数据,可以提供额外的信息,这些信息虽然不是程序运行所必需的,但能够帮助编译器、JVM(Java虚拟机)或工具更好...
25. **@Override注解**:用于标注重写父类或接口的方法。 26. **EOF异常**:`EOFException`在读取文件结束时抛出。 27. **Popup(弹出)**:在Java GUI中,可以使用`JPopupMenu`创建弹出式菜单。 28. **TrayIcon*...
但这2个方式还是有一点点区别: 4.1 由于是一个xml标签,因此是在解析xml,生成的类org.springframework.context.annotation.ComponentScanBeanDefinitionParser,关键代码: @Override public BeanDefinition ...
在Java编程语言中,接口(Interface)是一种定义行为的抽象类型,它允许程序员定义一组方法,但不提供具体的实现。自Java 8开始,引入了一项重要的新特性——默认方法(Default Method),也称为虚拟扩展方法。这个...
在这个主题中,我们将讨论一系列关键的Java概念和技术。 1. **多线程**:Java提供了内置的多线程支持,允许程序同时执行多个任务。通过实现Runnable接口或继承Thread类,开发者可以创建并管理自己的线程。线程间的...