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 阅读(124) 评论(0) 编辑 收藏 举报