【问题标题】:Netbeans Override AnnotationNetbeans 覆盖注释
【发布时间】:2011-12-08 20:27:22
【问题描述】:

我正在尝试创建一个继承自抽象超类(包含三个抽象方法)的新类。问题是 netbeans 给了我一个警告:添加 @override 注释。如果我没有覆盖任何方法,我为什么要这样做(添加此注释)。有什么问题 ?

超类是

abstract class Vehicul {

   String denumireaVehiculului;
   float lungimeaMinimaVehicul;
   int numarulMinimDeLocuri;

   public abstract void mediulDeDeplasareAVehiculului();
   public abstract void nivelulDeSiguranta();

   // Constructor implicit
   Vehicul() {

       denumireaVehiculului = "Eu sint vehicul";
       System.out.println(denumireaVehiculului);

       lungimeaMinimaVehicul = 3.50f;
       System.out.println("Lungimea minima este "+lungimeaMinimaVehicul);

       numarulMinimDeLocuri = 2;
       System.out.println("Numarul minim de locure este "+numarulMinimDeLocuri);
   }
}

子类是

 public class Avion extends Vehicul {

 public void mediulDeDeplasareAVehiculului() {

}

 public  void  nivelulDeSiguranta() {

}

public String getDenumireaVehiculului() {

     return "Avion";

public void   afiseazaCineEsti() {

        System.out.println("Eu sunt un avion");

   }

}

【问题讨论】:

    标签: java inheritance netbeans abstract-class superclass


    【解决方案1】:

    因为您正在覆盖(有点 - 见下文)。

    public class Avion extends Vehicul {
    
         public void mediulDeDeplasareAVehiculului() {
         ...
    }
    

    添加注释的一个原因是为了保护自己免受伤害。如果抽象类被修改并且抽象方法被删除,如果没有注释,子类中的方法将在你不知情的情况下变得“正常”。

    使用注释,编译器会说“嘿 - 你告诉我你正在覆盖某些东西,但你没有”

    【讨论】:

      【解决方案2】:

      @Override 的文档是这样说的:

      表示方法声明旨在覆盖一个方法声明 超类。如果一个方法被这个注解类型注解但没有覆盖一个 超类方法,编译器需要生成错误信息。

      我知道这有点令人困惑,因为您实际上并没有覆盖任何东西(您正在实现它!),但这就是它的工作原理。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-25
        相关资源
        最近更新 更多