开发测试学习
目录

对于几个意义相近的成员函数,有时使用相同的名字便于理解。因此,Java语言实现了成员函数重载,即可以创建几个名字相同、参数不同的成员函数。成员函数重载提?copy;了Java的多态行为。下面的例子用到了重载。

  classUniversity{
    Stringname,city;
    University(Stringname,Stringcity){
      this.name=name;
      this.city=city;
    }
    University(){
      name=北?copy;大学;
      city=北?copy;;
    }
  }
    classUniversityCreateAlt{
      publicstaticvoidmain(Stringargs[]){
        Universityu=newUniversity();
        System.out.println(大学:+u.name+城市:+u.city);
      }
    }

这个例子创建了一个University对象,调用了第二个构造函数。下面是它的运行结果。 C:\>javaUniversityCreateAlt大学:北?copy;大学城市:北?copy;一个构造函数可以调用另一个构造函数来创建实例。例如:

  classUniversity{
    Stringname,city;
    University(Stringname,Stringcity){
      this.name=name;
      this.city=city;
    }
    University(){
      this(北?copy;大学,北?copy;);
    }
  }

第二个构造函数调用了第一个构造函数来完成实例的初始化。你也可以用重载来创建一般的成员函数。下面这个例子里有University类的两个版本的samecity成员函数。samecity判断一个大学是否在一个城市里或一个大学和另一个大学是否在同一个城市里。一个成员函数用city作参数,另一个用University对象作参数。

  classUniversity{
    Stringname,city;
    University(Stringname,Stringcity){
      this.name=name;
      this.city=city;
    }
    booleansamecity(Stringcity){
      if(city.equals(this.city)) return true;
      else return false;
    }booleansamecity(Universityu){
      return samecity(u.city);
    }
  }
  classUniversityCity{
    publicstaticvoidmain(Stringargs[]){
      String city=上海;
      Universityu1=new University(北?copy;大学,北?copy;);
      Universityu2=newUniversity(清华大学,北?copy;);
      System.out.println(u1=+u1.name+,+u1.city);
      System.out.println(u2=+u2.name+,+u2.city);
      System.out.println(city=+city);
      System.out.println(u1.samecity(u2)=+u1.samecity(u2));
      System.out.println(u1.samecity(city)=+u1.samecity(city));}}

下面是该程序的运行结果。 C:\>javaUniversityCityu1=北?copy;大学,北?copy;u2=清华大学,北?copy;city=上海u1.samecity(u2)=trueu1.samecity(city)=false