千字走进注解的领域 | 带你学《Java面向对象编程》之四十六

上一篇:三分钟带你认识注解 | 带你学《Java面向对象编程》之四十五
【本节目标】
通过阅读本节内容,你将初步掌握编程过程中常见的三个注解的作用及使用方法,并能够通过各种注解简化、规范化自己的编程过程。

准确的覆写:@Override

当子类继承某一个父类之后,如果发现父类中的某些方法功能不足的时候往往会采用覆写的形式来对方法功能进行扩充,于是接下来首先来观察一种覆写操作。
范例:观察覆写的问题

class Channel {
    public void connect () {
        System.out.println(“********** Channel ************”) ;
    }
}
class DatabaseChannel extends Channel {
    public void connect() {
        System.out.println(“子类定义的通道连接操作。”) ;
    }
}
public class JavaDemo{
   public static void main(String args[]) {
        new DatabaseChannel().connect() ;
   }
}

执行结果:子类定义的通道连接操作。
开发之中经常要出现的两个问题:

  • 虽然要明确的继承一个父类并且进行方法的覆写,但是有可能由于疏忽忘记编写extends,于是这个时候不是覆写。class DatabaseChannel extends Channel
  • 在进行方法覆写的时候单词写错了。public void connection() {}

此时即便单词写错了,实际上程序在编译的时候也不会出现任何的错误信息,因为它认为这是一个新的方法。所以在开发之中为了避免这种问题的出现,可以在明确覆写的方法上追加有一个注解。
范例:追加注解

class Channel {
    public void connect () {
        System.out.println(“********** Channel ************”) ;
    }
}
class DatabaseChannel extends Channel {
    @override   //明确表示该方法是一个覆写来的方法
    public void connect() {
        System.out.println(“子类定义的通道连接操作。”) ;
    }
}
public class JavaDemo{
   public static void main(String args[]) {
        new DatabaseChannel().connect() ;
   }
}

该注解主要是帮助开发者在程序编译的时候可以检查出程序的错误。

过期操作:@Deprecated

所谓的过期操作指的是在一个软件项目的迭代开发过程之中,可能有某个方法或者是某个类,由于在最初设计的时候考虑不周(存在有缺陷),导致新版本的应用会有不适的地方(老版本不影响),这个时候又不可能直接删除掉这些操作,那么就希望给一个过渡的时间,于是就可以采用过期的声明,目的是告诉新的用户这些操作不要再用了,老的的用户用就用了。这样的方法就必须利用“@Deprecated”注解进行定义。
范例:声明过期操作

class Channel {
    @Deprecated           //老系统继续用,如果是新的就不要用了
    public void connect () {
        System.out.println(“********** Channel ************”) ;
    }
    public String connection() {
        return “获取了Xxx通道连接信息:” ;
    }
}
public class JavaDemo{
   public static void main(String args[]) {
        new Channel().connect() ;
   }
}

千字走进注解的领域   | 带你学《Java面向对象编程》之四十六
图一 执行结果

在有一些开源项目中有些比较烦人的问题:新版本出现后,将里面的方法彻底变样。

压制警告:@SuppressWarnings

以之前的过期程序为例,可以发现在进行程序编译的时候会出现一个错误的提示信息:

千字走进注解的领域   | 带你学《Java面向对象编程》之四十六
图二 错误提示信息

如果此时不愿意见到这些提示信息(或者已经明确知道错误在哪里),那么就可以进行错误警告信息的压制:

class Channel {
    @Deprecated           //老系统继续用,如果是新的就不要用了
    public void connect () {
        System.out.println(“********** Channel ************”) ;
    }
    public String connection() {
        return “获取了Xxx通道连接信息:” ;
    }
}
public class JavaDemo{
   @SuppressWarnings ({“deprecation”})
   public static void main(String args[]) {
        new Channel().connect() ;
   }
}

它做的只是让警告信息不出现,不出现干扰而已。
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:初识面向对象第三特征-多态 | 带你学《Java面向对象编程》之四十七
更多Java面向对象编程文章查看此处

上一篇:带你“找对象”--Java内存分析 | 带你学《Java面向对象编程》之二


下一篇:2017大数据标准化论坛发布了第一批大数据系统测试结果,阿里云数加获得了大数据系统测试证书。