首页 > 代码库 > 构造方法和方法的重载
构造方法和方法的重载
**
* 方法重载就是在类中可以写多个方法名相同的方法,但这些方法除了方法名相同外,其参数类型,参数个数
* 和方法的返回值,都不相同。
*
*而构造方法就是一种特殊的方法,其的方法名必须和类名相同。
*构造方法没有返回值类型,没有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."); } }
指的注意的是调用父类方法时,调用普通方法和构造方法的区别。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。