📅  最后修改于: 2023-12-03 15:16:37.207000             🧑  作者: Mango
在Java中,继承是一种非常重要的特性,它允许子类继承父类的行为和属性,从而避免了代码的重复。在Java中,我们可以使用继承注解来增强继承的功能,使得子类的行为更加灵活和可控。
在Java中,我们经常需要覆盖父类的方法,以便实现子类的特殊行为。为了防止误操作,Java引入了@Override
注解,用于标记子类方法是覆盖父类方法而不是新建方法。如果你的代码有错误的Override注解,编译器会直接提示你的错误。
public class Parent {
public void sayHello(){
System.out.println("Hello");
}
}
public class Child extends Parent {
//使用 @Override 注解来覆盖父类的 sayHello 方法
@Override
public void sayHello(){
System.out.println("Hello child");
}
}
有时候,在开发过程中,你可能会发现某个方法或类已经不再使用,但为了兼容旧版本的代码,你不得不将其保留。为了提醒其他开发人员这段代码已经过时,Java引入了@Deprecated
注解,表示这个方法或类已经不再推荐使用。
public class MyClass {
//使用 @Deprecated 注解标记该方法不再推荐使用
@Deprecated
public void oldMethod(){
//...
}
}
有时候,在开发过程中,你可能会使用一些让警告产生的代码,如使用了未使用的private变量或者强制类型转换等。为了减少这些警告的产生,Java引入了@SuppressWarnings
注解,可以将指定的警告信息隐藏掉。
public class MyClass {
@SuppressWarnings("unused") //使用 @SuppressWarnings 注解来隐藏没有使用的警告
private int unusedVar = 0;
}
在Java8中,引入了Lambda表达式和函数式接口,并且为了标识一个接口是函数式接口,一般需要使用@FunctionalInterface
注解。这个注解用来标记该接口是一个函数式接口,即该接口只有一个抽象方法,其他的方法都是默认实现或者静态方法。
@FunctionalInterface
public interface MyInterface {
void sayHello();
default void helloWorld() {
System.out.println("Hello World!");
}
static void welcome() {
System.out.println("Welcome!");
}
}
在Java中,子类会继承父类的方法和属性,但是父类的注解不会被继承。为了让子类继承父类的注解,Java引入了@Inherited
注解,可以让子类继承父类的注解。
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotation {
String value();
}
@MyAnnotation("Parent")
public class Parent {
//...
}
public class Child extends Parent {
//...
}
上面的代码中,@MyAnnotation
注解被标记了@Inherited
注解,在子类Child
中,也会继承该注解。
继承注解是Java语言中的一个重要特性,通过使用它们,我们可以更好的控制子类行为、隐藏警告信息、标记过时代码、定义函数式接口等。掌握这些注解,可以让我们的代码更加优雅和高效。