在构造器中可以调用本类的其他重载构造器,不能使用构造器名称来调用另一个构造器,而是应该使用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关键字调用本类重载构造器的更多相关文章
-
java多线程并发去调用一个类的静态方法安全性探讨
java多线程并发去调用一个类的静态方法安全性探讨 转自:http://blog.csdn.net/weibin_6388/article/details/50750035 这篇文章主要讲多线程对 ...
-
Java中是否可以调用一个类中的main方法?
前几天面试的时候,被问到在Java中是否可以调用一个类中的main方法?回来测试了下,答案是可以!代码如下: main1中调用main2的主方法 package org.fiu.test; impor ...
-
JAVA_SE基础——32.this关键字调用本类的构造方法
黑马程序员入学blog... 也算是学习笔记. 下面我们来看段代码: package day07; class Student{ int id; //身份证 String name; //名字 pub ...
-
java 通过反射机制调用某个类的方法
package net.xsoftlab.baike; import java.lang.reflect.Method; public class TestReflect { public s ...
-
extends 类的继承 / super关键字,调用继承类里面的函数和变量
Son 继承Father 当其他脚本想调用 Father类里面的变量 or 方法 可以把 Son r=new Son() 等价于 Father r=new Father() 注意: 函数只能单继承 ...
-
[转]java多线程并发去调用一个类的静态方法安全性探讨
文章转自:https://blog.csdn.net/weibin_6388/article/details/50750035 这篇文章主要讲多线程对静态方法访问的数据安全性 总结如下: 1,java ...
-
java同一个类中,构造器如何调用另一个重载的构造器?
构造器里面调用其它构造器,格式方法如下:1.使用this调用另一个重载构造器,只能在构造器中使用:2.必须写在构造器执行体的第一行语句: 示例如下: import static java.lang.S ...
-
《 Java 编程思想》CH07 复用类
复用代码是 Java 众多引人注目的功能之一. Java 可以通过创建类来复用代码,要在使用类的时候不破坏现有代码,有两种方式: 组合:在新的类中使用现有类的对象. 继承:按照现有类的类型来创建新类, ...
-
Java中this关键字在构造方法中的使用
1. Java中this关键字代表对象本身.用this关键字可以在类的内部调用属性和方法,这样代码的可读性比较高,因为它明确的指出了这个属性或方法的来源. 2. 同时在构造函数中也可以使用this关键 ...
随机推荐
-
Python入门笔记(24):Python面向对象(1)速成
一.Python经典类与新类 经典类:如果没有直接或间接的子类化一个对象,也就是说如果没有指定一个父类,或者是如果子类化的基本类没有父类,那么就定义了经典类: class classics: 'def ...
-
每天一个linux命令(6):mv命令
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 1.命令格式: mv [选项] 源文件或目 ...
-
模板:强连通分量&;2-sat
void Tarjan(int x){ low[x]=ID[x]=++tot; st[++top]=x;Inst[x]=true; for(int i=fir[x];i;i=nxt[i]) if(!I ...
-
Hibernate 1、Hello Hibernate
所使用到的jar 包: 1.创建实体类 public class User { private Integer id; private String name; private String addr ...
-
201521123005《Java程序设计》第十三周学习总结
1. 本周学习总结 1.网络基本概念 2.网络常用命令 ipconfig 查看网络配置信息,如ip地址 ping 测试网络是否连通 telnet 远程登录 ftp 登陆ftp Fport (xp下)查 ...
-
Vue第一个自定义组件:数字输入框(number-input)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
-
.net mvc前台如何接收和解析后台的字典类型的数据
很久没有写博客了,最近做了一个公司门户网站的小项目,其中接触到了一些我不会的知识点,今日事情少,便记录一下,当时想在网上搜索相关的内容,但是没有找到. 今天想记录一下这样一个小的需求的做法.先说一下我 ...
-
简单易懂的程序语言入门小册子(3):基于文本替换的解释器,let表达式,布尔类型,if表达式
let表达式 let表达式用来声明一个变量. 比如我们正在写一个模拟掷骰子游戏的程序. 一个骰子有6个面. 所以这个程序多次用到了6这个数字. 有一天,我们忽然改变主意,要玩12个面的骰子. 于是我们 ...
-
SVN 错误:Error validating server certificate for &#39;https://xxxxxxx&#39;:443... Mac os svn客户端证书验证缓存 解决
mac上的SVN今天突然间 不好使了 在进行SVN操作是报出警告信息 Error validating server certificate for 'https://xxxxxxx':443 - T ...
-
Editplus中添加System.out.println()快捷键
首先,找到自己电脑Editplus的安装路径,在所属文件夹中找到JAVA.ACP文件: 然后,在文件的末尾加上如下代码: #T=syso System.out.println("^!&quo ...