2018-07-25构造方法+This关键字+Super关键字

//构造方法:创建对象new的时候调用,而且一个对象只调用一次!

 

构造方法可以重载!

 

构造方法:如果你这个类里面一个构造方法也没有,那么这个类在编译的时候,编译器会自动添加一个空参(NULL/0.0/0),但是如果有一个或者多个构造方法,那么编译器就不添加空参了!

public Person(){

     //空参构造方法

}

 

//强调:

在手动添加有参构造方法时,一定要手动添加一个空参构造方法!

 

Static修饰的方法,可以直接类名.方法名()调用!

 

构造方法格式:

修饰符 构造方法名(参数列表){

     //用于初始化成员变量!

}

 

构造方法的体现:

构造方法没有返回值类型!也不需要写返回值,因为它是为构建对象的,对象创建完,方法就执行结束!

构造方法名称必须和类名保持一致!

构造方法没有具体的返回值!

 

构造方法的细节:

一个类中可以有多个构造方法,多个构造方法是以重载的形式存在的!

构造方法是可以被private修饰的,作用:其他类无法创建该类的对象!

 

构造方法在对象创建时就执行了,而且只执行一次!

一般方法是在对象创建后,需要使用时才被对象调用,并可以被多次调用!

 

有了构造方法之后,还是会需要Get和Set方法,因为构造方法只能执行一次,想要再次用构造方法赋值只能再创建对象,而Set/Get可以多次赋值调用!

 

构造方法之间的调用,可以通过this关键字来完成(Tips:仅限于构造方法之间):

格式:

this(参数列表); //通过重载判断调用的是哪个构造方法,并执行该构造方法的方法体!

//使用this调用构造方法,这个语句必须放在第一行!

 

This另一个作用:可以在成员变量名前面加上this.来区别成员变量和局部变量(this代表本类/调用者)!

 

 

package com.oracle.demo03;

//父类构造方法:

public class Person {

     public Person(){

         System.out.println("这是父类的构造方法!");

     }

}

 

package com.oracle.demo03;

public class Student extends Person {

     public Student(){

         //隐式代码

         super();

     }

}

 

package com.oracle.demo03;

public class Test1 {

     public static void main(String[] args) {

         Student stu=new Student();

     }

}

//继承一个类时,构造方法会隐式一个super()

 

//有时,父类写了一个带参数列表的构造方法,父类继承时报错,原因是父类写了构造方法,子类继承时不再生成默认空参构造,所以会报错,可以在子类方法体位置写入super(“吉吉国王”,18),或者在父类写一个空参构造!

 

Private修饰的成员变量,不能被继承!

 

当父类中没有空参数构造方法时,子类的构造方法必须有显示的super语句,指定要访问的父类有参数构造方法!

 

//构造方法只要间接或直接能够调用到父类的构造方法就可以!

 

package com.oracle.demo03;

//父类构造方法:

public class Person {

     String name;

     int age;

     public Person(){

         System.out.println("这是父类的构造方法!");

     }

}

package com.oracle.demo03;

public class Student extends Person {

     public Student(String name,int age){

         this(name);

         this.age=age;

     }

    

     public Student(String name){

         //这里默认有个super(),所以上方代码this(name)时就已经调用了super!

     }

}

/当发生this和super都要在第一行时用这个方法!

//快捷创建构造方法!

 

//谨记:在写有参构造时,也要写上一个无参构造!

 

//构造方法默认第一行都是有super()的!

 

格式:

调用本类中的构造方法

this(实参列表);

调用父类中的空参数构造方法

super();

调用父类中的有参数构造方法

super(实参列表);

 

posted on 2018-07-26 09:05  Postgre叮当牛i  阅读(123)  评论(0编辑  收藏  举报

导航