this调用构造方法

2018-10-04  本文已影响81人  UlissesJr

    类中的方法一共有两种:
        普通方法:this.方法名称(参数...)
        构造方法:this(参数...)

class Person{
    private String name;
    private int age;
    public Person() {
    }
    public Person(String name,int a) {
        this.name=name;
        this.age=age;
        this.print();//调用本类方法
    }
    public void print() {
        System.out.println("*********************");
    }
    public String getInfo() {
        return "姓名: "+this.name+"  年龄:"+this.age;
    }
}
public class StringDemo {
public static void main(String args[]) {
    System.out.println(new Person("张三",20).getInfo());
}
}
结果//*********************
姓名: 张三  年龄:0

虽然调用本类的普通方法前可以不使用this关键词。但是建议追加是this,这样的目的是可以区分方法的定义来源。

范例:调用构造

    构造方法与普通方法最大的区别:使用关键字new实例化类新对象的时候使用一次,而普通方法是在对象实例化完成后(构造已经执行过了)可以调用多次

    那么在java里面支持类构造方法的互相调用

<code class="language-java">class Person{  
    private String name;  
    private int age;  
    public Person() {  
        <span style="color:#cc0000;">System.out.println("**************");</span>  
    }     
    public Person(String name) {  
        <span style="color:#cc0000;">System.out.println("**************");</span>  
        <span style="color:#3333ff;">this.name=name;  
</span> }  
    public Person(String name,int age) {  
        <span style="color:#cc0000;">System.out.println("**************");</span>  
        <span style="color:#3333ff;">this.name=name;</span>  
        this.age=age;  
          
    }  
      
    public String getInfo() {  
        return "姓名: "+this.name+"  年龄:"+this.age;  
    }  
}  
public class StringDemo {  
public static void main(String args[]) {  
    System.out.println(new Person().getInfo());  
    System.out.println(new Person("张三").getInfo());  
    System.out.println(new Person("张三",20).getInfo());  
}  
}     
</code>  


结果:
**************
姓名: null  年龄:0
**************
姓名: 张三  年龄:0
**************
姓名: 张三  年龄:20

现在给出的程序中出现了重复的代码,所以这个样的操作很明显不应该出现,必须消除重复数据

class Person{
    private String name;
    private int age;
    public Person() {
        System.out.println("**************");
    }   
    public Person(String name) {
        this();//调用本类中的无参构造
        this.name=name;
    }
    public Person(String name,int age) {
        this(name);//调用本类中的有参构造
        this.age=age;   
    }
    public String getInfo() {
        return "姓名: "+this.name+"  年龄:"+this.age;
    }
}
public class StringDemo {
public static void main(String args[]) {
    System.out.println(new Person().getInfo());
    System.out.println(new Person("张三").getInfo());
    System.out.println(new Person("张三",20).getInfo());
    }
}   


结果:
**************
姓名: null  年龄:0
**************
姓名: 张三  年龄:0
**************
姓名: 张三  年龄:20
虽然使用this可以实现构造方法的互相调用,但是此时有如下的两点要求

一、this()调用构造方法的语句必须放在构造方法的首行。
二、使用this调用构造方法的时候请留有出口;

上一篇 下一篇

猜你喜欢

热点阅读