**
* 方法重载就是在类中可以写多个方法名相同的方法,但这些方法除了方法名相同外,其参数类型,参数个数
* 和方法的返回值,都不相同。
*
*而构造方法就是一种特殊的方法,其的方法名必须和类名相同。
*构造方法没有返回值类型,没有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 *构造方法没有返回值类型,没有void 11 *构造方法不能从父类中继承 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 stub 24 System.out.println(" i am the frist method! I do not have parameter"); 25 } 26 public void overloading() 27 { 28 // TODO Auto-generated method stub 29 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不是3 37 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."); } }
指的注意的是调用父类方法时,调用普通方法和构造方法的区别。
构造方法和方法的重载
时间: 2024-10-10 03:13:50