在构造器中可以调用本类的其他重载构造器,不能使用构造器名称来调用另一个构造器,而是应该使用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

java使用this关键字调用本类重载构造器的更多相关文章

  1. java多线程并发去调用一个类的静态方法安全性探讨

    java多线程并发去调用一个类的静态方法安全性探讨 转自:http://blog.csdn.net/weibin_6388/article/details/50750035   这篇文章主要讲多线程对 ...

  2. Java中是否可以调用一个类中的main方法?

    前几天面试的时候,被问到在Java中是否可以调用一个类中的main方法?回来测试了下,答案是可以!代码如下: main1中调用main2的主方法 package org.fiu.test; impor ...

  3. JAVA_SE基础——32.this关键字调用本类的构造方法

    黑马程序员入学blog... 也算是学习笔记. 下面我们来看段代码: package day07; class Student{ int id; //身份证 String name; //名字 pub ...

  4. java 通过反射机制调用某个类的方法

    package net.xsoftlab.baike; import java.lang.reflect.Method; public class TestReflect {     public s ...

  5. extends 类的继承 / super关键字,调用继承类里面的函数和变量

    Son 继承Father 当其他脚本想调用 Father类里面的变量 or 方法 可以把 Son r=new Son()   等价于 Father r=new Father() 注意: 函数只能单继承 ...

  6. [转]java多线程并发去调用一个类的静态方法安全性探讨

    文章转自:https://blog.csdn.net/weibin_6388/article/details/50750035 这篇文章主要讲多线程对静态方法访问的数据安全性 总结如下: 1,java ...

  7. java同一个类中,构造器如何调用另一个重载的构造器?

    构造器里面调用其它构造器,格式方法如下:1.使用this调用另一个重载构造器,只能在构造器中使用:2.必须写在构造器执行体的第一行语句: 示例如下: import static java.lang.S ...

  8. 《 Java 编程思想》CH07 复用类

    复用代码是 Java 众多引人注目的功能之一. Java 可以通过创建类来复用代码,要在使用类的时候不破坏现有代码,有两种方式: 组合:在新的类中使用现有类的对象. 继承:按照现有类的类型来创建新类, ...

  9. Java中this关键字在构造方法中的使用

    1. Java中this关键字代表对象本身.用this关键字可以在类的内部调用属性和方法,这样代码的可读性比较高,因为它明确的指出了这个属性或方法的来源. 2. 同时在构造函数中也可以使用this关键 ...

随机推荐

  1. SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第1部分)

    为了缩小读取操作所涉及范围,本文首先着眼于简单的SELECT查询,然后引入执行更新操作有关的附加过程.最后你会读到,优化性能时SQLServer使用还原工具的相关术语和流程. 关系和存储引擎 如图所示 ...

  2. SQL Server里的INTERSECT

    在今天的文章里,我想讨论下SQL Server里的INTERSECT设置操作.INTERSECT设置操作彼此交叉2个记录集,返回2个集里列值一样的记录.下图演示了这个概念. INTERSECT与INN ...

  3. 【Spark】---- 在Linux集群上安装和配置Spark

    1 安装JDK   1) 进入JDK官网 2) 下载JDK安装包 3)配置环境变量,在/etc/profile增加以下代码 JAVA_HOME=/home/hadoop/jdk1.6.0_38 PAT ...

  4. 数论 - Miller_Rabin素数测试 + pollard_rho算法分解质因数 ---- poj 1811 : Prime Test

    Prime Test Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 29046   Accepted: 7342 Case ...

  5. ajax回调函数Status问题

    function readyDo() {//            alert(xhr.readyState + "分" + xhr.Status);            if ...

  6. ASP.NET十分有用的页面间传值方法

    一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交,   <form action= "target.aspx" method = "post&qu ...

  7. Html5学习笔记(1)

    1.figure\figcaption||detail\summary||mark学习笔记 效果图 代码为: <!DOCTYPE html> <html> <head&g ...

  8. 小白学Linux--虚拟机下安装Ubuntu16

    最近接收到任务,说是下半年可能要搞全文检索.听到后顿时炸锅了,一方面是对新技术的兴奋(当然主要还是这技术比较值钱),另一方面,我TM连Linux都不会玩,怎么搞全文检索.怀揣着对开源世界的无线向往(恐 ...

  9. Visual Studio中附加调试器的方法

    添加一个空的C++项目,项目属性配置如图. 命令里写要调试的程序的完整路径. 工作目录写所在目录的路径.

  10. 【转】RBAC权限管理

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...