zoukankan      html  css  js  c++  java
  • java使用this关键字调用本类重载构造器

    在构造器中可以调用本类的其他重载构造器,不能使用构造器名称来调用另一个构造器,而是应该使用Java特定的this(….)来调用。

     

    this(….)方法必须出现在构造器中的第一行,用来调用其他重载构造器。调用时参数必须严格匹配。

    这种调用方式的优点在于一个构造器可以不必重复编写其他构造器中已有的代码,而是通过调用其他构造函数以实现复用,从而提供良好和类代码结构。

    public class Teacher {
    private String name;           
    private String gender;  
    private int age;

    public Teacher(String name){
    this(name,"男");
    System.out.println("第一行构造器");
    }

    public Teacher(String name,String gender ){
    this(name,gender,45);
    System.out.println("第二行构造器");
    }
    public Teacher(String name,String gender ,int age){
    this.name = name;
    this.gender = gender;
    this.age = age;
    System.out.println("这是第三个构造函数");
    }

    public void setName(String name){
    this.name = name;
    }

    public String getName(){
    return name;
    }

    public void  setGender(String gender) {
    this.gender = gender;
    }

    public String getGender(){
    return gender;
    }

    public void setAge( int age) {
    if (age > 100) {
    return;
    }
    this.age = age;
    }

    public int getAge(){
    return age;
    }

    public void lecture() {

    }
    public void  doExec() {

    }
    public String say() {
    String str = "我是" + name + ",性别  " +gender + ",年龄" +age;
    return str;
    }


    }

    在TestConstructor 类中调用



    public class TestConstructor {
    public static void main(String[] args) {
    Teacher t = new Teacher("张三");
    System.out.println(t.say());

    Teacher t1 = new Teacher("李四", "女");
    System.out.println(t1.say());

    Teacher t2 = new Teacher("王五", "男", 33);
    System.out.println(t2.say());



    }


    }


    输出结果

    这是第三个构造函数
    第二行构造器
    第一行构造器
    我是张三,性别  男,年龄45
    这是第三个构造函数
    第二行构造器
    我是李四,性别  女,年龄45
    这是第三个构造函数
    我是王五,性别  男,年龄33

    文章来源:http://blog.csdn.net/baidu_30360575/article/details/50548695

  • 相关阅读:
    ios8 xcode6 下的启动界面设置和图标设置
    写一些有关android的东西吧,那时候玩android时候的一些笔记
    使用sqlite3 有关tableview删除cell的问题
    iOS 使用CLGeocoder获取地理位置
    ios 解决有关火星坐标的问题
    iOS 火星坐标相关整理及解决方案汇总(转)
    IOS开发UI篇之──自定义UIActionSheet
    python中新式类和经典类的区别
    python中几个常用的算术函数
    多线程
  • 原文地址:https://www.cnblogs.com/wanghongyun/p/6132083.html
Copyright © 2011-2022 走看看