1.构造方法的重载是指同一个类中定义不同参数的多个构造方法,已完成不同情况下对象的初始化。
例如:
Point();
Point(x);
Point(x,y);
2.一个类的若干个构造方法之间可以相互调用,当类的构造方法需要调用另一个构造方法时,可以使用关键子 this();括号可以带参数或不带参数,并且这个调用语句必须是这个构造方法的第一个可执行语句。
例如:
class Sun { Sun(int a){ System.out.println("Hello this is week "+a); } Sun(){ this(5); //调用另一个构造方法 System.out.println("My name is Sun"); } } public class Test{ public static void main(String args[]){ Sun moon=new Sun(); } } 运行结果: Hello this is week 5 My name is Sun
3.构造方法的继承
Java中子类可以继承父类的构造方法,构造方法的继承遵循以下的原则:
一.子类无条件的继承父类的无参数构造方法
二.对于带参数的父类的构造方法,子类可以在自己的构造方法中使用super关键字来调用它,但这个调用的语句必须是子类构造方法中的第一个可执行语句
三.如果子类中没有定义构造方法,则它将继承父类的无参数构造方法作为自己的构造方法(注意不是将父类的带参数的构造方法作为自己的构造方法)l如果子类定义了构造方法,则在创建对象时,将先执行来自继承父类的无参数构造方法,然后在执行自己的构造方法。
四.父类与子类的构造方法的执行顺序:先执行父类的构造方法,再依次执行子类的构造方法
例如:
class A{ public A(){ System.out.println("Hello A"); } } class B extends A{ public B(){ System.out.println("Hello B"); } } class C extends B{ public C(){ System.out.println("Hello C"); } } public class Test { public static void main(String[] args) { C c=new C(); } }
4.super的用法
一.当在子类的构造方法中需要调用父类无参数的构造方法时,要用到super关键字,且super();只能放在子类构造方法的第一个语句。
例如:
package Yang; public class MyTest { public static void main(String[] args) { river i=new river(); } } class Build{ Build(){ System.out.println("我叫杨萌晖"); for(int i=1;i<=20;i++){ if(i%3==0){ System.out.println("Oh It's sunny today " +i); } else if(i%5==0){ int b=i; System.out.println("西南科技大学" +b); } } } } class river extends Build{ river(){ super(); System.out.println("我今年上大二了"); } }