美文网首页
this调用构造方法

this调用构造方法

作者: UlissesJr | 来源:发表于2018-10-04 22:30 被阅读81次

    类中的方法一共有两种:
        普通方法: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调用构造方法的时候请留有出口;

相关文章

  • 11-this调用本类方法

        除了调用属性之外,this也可以实现方法的调用,但是对于方法的调用就必须考虑构造和普通方法: 构造方法调用...

  • 《Oracle Java SE编程指南》13-03:构造器和继承

    内容导航: 前言 1、构造方法与继承 2、继承中构造方法的调用 3、子类调用父类构造方法的原因 4、子类构造方法的...

  • super关键字

    super关键字用来调用父类属性和方法。子类构造方法必须调用父类的构造方法,如果没有显示调用父类的构造方法,系统默...

  • 十五、this和super关键字

    一、this关键字 1. this调用构造方法 方法之间调用时,可以通过方法名进行调用。可是针对构造方法,无法通过...

  • scala:构造方法与apply

    scala中分主构造方法、辅助构造方法,辅助构造方法必须调用主构造方法 构造方法参数作用域 如果父类有主构造方法,...

  • 构造方法

    构造方法A.指定构造方法;B.便利构造方法; 关系:A.子类的指定构造方法必须调用父类的构造方法;B.便利构造方法...

  • 便利构造器

    类方法 调用方式 构造方法 便利构造函数(推荐使用)1. convenience开头2. 在构造函数中必须明确调用...

  • 34.5 继承中构造方法访问的特点2020-01-26

    同时super()父类构造方法只有子类构造方法可以调用

  • 史上最全的JDK1.8HashMap底层源码分析(包括红黑树源码

    构造方法 空构造方法 底层调用 put方法 链表形式 首先调用putVal public V put(K key...

  • this调用构造方法

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

网友评论

      本文标题:this调用构造方法

      本文链接:https://www.haomeiwen.com/subject/bsrfaftx.html