java中的构造方法,this、super的用法

一、构造方法java

定义:与类同名没有返回值的方法称为构造方法;ui

public class test1 {
private String name;
private int age;
public test1(){
}this

}对象

上面的test1()是默认构造方法,即便没有定义java虚拟机在运行的时候也会自动生成,继承

固然若是定义了重载的构造方法便不会自动生成;ip

构造方法的做用有两点1.经过构造方法创建一个对象;2.经过构造方法能够快速的赋初值;get

public class Main {
public static void main(String[] args) {
test1 t1=new test1();//new后面加上构造方法创建了一个对象
}
}虚拟机

而若是类中有其它属性的话能够有构造方法的重载:class

public test1(String name, int age) {
this.name = name;
this.age = age;
}test

利用重载的构造方法能够很快速的给对象赋初值,特别是对于private的属性,若是用getter和setter很不方便;

public static void main(String[] args) {
test1 t1=new test1();
test1 t2=new test1("bob", 18);
System.out.println(t1);
System.out.println(t2);
}

输出结果:

test1 [name=null, age=0]
test1 [name=bob, age=18]

t1没有赋初值全部它里面的值是系统设置的初值;

t2利用有参的构造方法,直接给属性设置了初值,很是的方便,就不用setter方法来一个个设置值;

2. this

谁调用指向谁,是指向调用的对象;

举例说明:

在上面的test1 类中加上如下fly()方法:

public void fly(){
System.out.println(this.name+"会飞");//this指向调用的对象
}

在运行中调用:

public static void main(String[] args) {
test1 t1=new test1();
test1 t2=new test1("bob", 18);
t1.fly();//方法中的this指向t1
t2.fly();//方法中的this指向t2
// System.out.println(t1);
// System.out.println(t2);
}

结果以下:

null会飞
bob会飞

另外this还须要注意的一点是用在构造方法中:

public test1(String name, int age) {
this();//在运行构造方法进行属性赋值前是必定会先调用无参数的构造方法
this.name = name;
this.age = age;
}

固然构造方法调用主要看this(参数列表)看圆括号里面的参数列表和哪个构造方法相同就执行哪个构造方法;

2. super:指向父类,调用父类的属性和方法;

其实使用起来和this关键字差很少;

public test1(){
super();
}

上面的super(()调用的是父类的构造方法,若是没有继承父类的话,那么它的父类是指向object(全部类的超类);

使用:suiper关键字加“ . ”能够访问父类能够访问的属性和方法,通常用于区分被子类重写了的方法;

 

使用this(参数列表)和super(参数列表)的构造方法注意事项:

a.  只可以位于构造方法的第一行;

b. 不能同时出如今一个构造方法中;

c. 老是会先访问完父类的构造方法在访问子类里面的构造方法;

相关文章
相关标签/搜索