如何正确的隐藏java语言中的名字

    作者:课课家教育更新于: 2016-02-18 15:46:28

    大神带你学编程,欢迎选课

      只有C++程序员可能才会惊讶于名字的隐藏,因为它的工作原理与在C++里是完全不同的。如果java基础类有一个方法名被“过载”使用多次,在衍生类里对那个方法名的重新定义就不会隐藏任何基础类的版本。所以无论方法在这一级还是在一个基础类中定义,过载都会生效:

    如何正确的隐藏java语言中的名字_java编程_java基础类_课课家

      //: Hide.java

     

      // Overloading a base-class method name

     

      // in a derived class does not hide the

     

      // base-class versions

     

      class Homer {

     

      char doh(char c) {

     

      System.out.println("doh(char)");

     

      return 'd';

     

      }

     

      float doh(float f) {

     

      System.out.println("doh(float)");

     

      return 1.0f;

     

      }

     

      }

     

      class Milhouse {}

     

      class Bart extends Homer {

     

      void doh(Milhouse m) {}

     

      }

     

      class Hide {

     

      public static void main(String[] args) {

     

      Bart b = new Bart();

     

      b.doh(1); // doh(float) used

     

      b.doh('x');

     

      b.doh(1.0f);

     

      b.doh(new Milhouse());

     

      }

     

      } ///:~

     

      正如如何正确确保的清楚java对象那篇文章讲到的那样,很少会用与基础类里完全一致的签名和返回类型来覆盖同名的方法,否则会使人感到迷惑(这正是C++不允许那样做的原因,所以能够防止产生一些不必要的错误)。

课课家教育

未登录