首页 > 代码库 > 构造方法和方法的重载

构造方法和方法的重载

**
* 方法重载就是在类中可以写多个方法名相同的方法,但这些方法除了方法名相同外,其参数类型,参数个数
* 和方法的返回值,都不相同。
*
*而构造方法就是一种特殊的方法,其的方法名必须和类名相同。
*构造方法没有返回值类型,没有void
*构造方法不能从父类中继承
*构造方法可以重载,一个class可以有多个构造方法,不同的对象根据参数的不同
* 选择合适的构造方法。
* 构造方法不能直接通过方法名来引用,必须用new运算符
* 在构造方法中可以调用当前类和其父类的另一个构造方法,但必须是方法体的第一条语句。

   如果一个构造方法中中的第一条没有用super来调用父类的构造方法,则编译器也会默认在构造方法中用super()语句调用

  无参的构造方法

   但是,如果构造方法的第一句是用this来调用本类中的另外一个构造方法,那么他就不会再默认调用super()
* 使用当前类的构造方法用this来引用,使用父类的构造方法用super来引用
*   super有三种情况:

     用来访问父类中被覆盖的方法

     用来访问父类中的构造方法、

     用来访问父类中被隐藏的成员变量。
*其为类的方法中的变量赋初始值。
* /

下面我们先建一个父类

 1 import javax.swing.Spring; 2  3 public class overloading { 4      5 /** 6  * 方法重载就是在类中可以写多个方法名相同的方法,但这些方法除了方法名相同外,其参数类型,参数个数 7  * 和方法的返回值,都不相同。 8  *  9  *而构造方法就是一种特殊的方法,其的方法名必须和类名相同。10  *构造方法没有返回值类型,没有void11  *构造方法不能从父类中继承12  *构造方法可以重载,一个class可以有多个构造方法,不同的对象根据参数的不同13  *  选择合适的构造方法。14  * 构造方法不能直接通过方法名来引用,必须用new运算符15  * 在构造方法中可以调用当前类和其父类的另一个构造方法,但必须是方法体的第一条语句16  *   使用当前类的构造方法用this来引用,使用父类的构造方法用super来引用17  *18  *其为类的方法中的变量赋初始值。19  * /20  */21   public Spring d;22   public overloading() {23     // TODO Auto-generated constructor stub24       System.out.println(" i am the frist method! I do not have parameter");25 }26   public void overloading() 27   {28     // TODO Auto-generated method stub29    System.out.println("I am the method 2! I have not return value!");30   }31   public overloading(String d)32   {33       34       35    //   d="33";如果在此对d赋值,则下面的overloading ol2 =new overloading("3");的赋值将会36   //被覆盖,即,输出的结果里d的值为33不是337       System.out.println(d);38   }39   40 public static void main(String[] args) {41     //类的实例化42     overloading ol=new overloading();43     ol.overloading();44     overloading ol2 =new overloading("3");45 }46 47 }

然后再子类中继承父类,并调用父类中的方法:

public class suboverclass extends overloading{        //subclass的构造方法           public suboverclass() {            // TODO Auto-generated constructor stub            //调用父类的构造方法(do  not have parameter)                 super();            //invoke a normal method from father class               super.overloading();
System.out.println(
"I am a constructor stub in subclass."); } public suboverclass(String c){ //subclass的构造方法2(have a parameter) super("I am a constructor method and have a parameter."); System.out.println("I am a constructor stub in subclass."+c); } public static void main(String[] args) { //无参构造方法 suboverclass sub =new suboverclass(); suboverclass sub2=new suboverclass("and I invoke the method from farther class overloading."); } }

指的注意的是调用父类方法时,调用普通方法和构造方法的区别。