概述
java中的this关键字
this描述的是本类结构调用的关键字,在java中this关键字可以描述三种结构的调用:
-
当前类中的属性:this.属性。
-
当前类中的方法(普通方法和构造方法):this()、this.方法名称()。
-
描述当前对象。
1、this调用本类属性
构造方法或普通方法中可通过this访问当前类的成员属性时对成员属性进行初始化。
范例:通过"this.成员属性"访问
class Person {
private Stirng name; //人的姓名
private int age; //人的年龄
/**
*定义构造方法,该方法参数名称与成员属性名称相同
**/
public Person (String name ,int age) {
this.name = name; //使用this属性标注本类属性
this.age = age; //使用this属性标注本类属性
}
//setter、getter略
public void tell () {
System.out.println("姓名:" + this.name + "、年龄:" + this.age);
}
}
public class JavaDemo {
Person per = new Person("张三" ,12);
per.tell();
}
/**
*程序执行结果:
*姓名:张三、年龄:12
**/
注意:只要调用类中成员属性,都建议使用"this.成员属性"的方式来进行表示。
2、this调用本类方法
2.1 、调用本类普通方法
可以使用"this.方法名称()"调用,并且可以在构造方法和普通方法中使用。
范例:使用this调用本类普通方法
class Person {
private Stirng name; //人的姓名
private int age; //人的年龄
public Person (String name ,int age) {
this.setName(name); //调用本类setName()方法
setAge(age); //不适用"this.方法()"也表示调用本类方法
}
//setter、getter略
public void tell () {
System.out.println("姓名:" + this.name + "、年龄:" + this.age);
}
}
public class JavaDemo {
Person per = new Person("张三" ,12); //实例化Person类对象
per.tell(); //输出信息
}
/**
*程序执行结果:
*姓名:张三、年龄:12
**/
该程序中,由于是在本类中,所以对是否使用"this.方法()"没用明确要求,但是还是采用"this.方法()"的形势更加合理。
2.2、调用本类构造方法
当一个类中存在若干个构造方法时,可以利用this()的形式实现构造方法之间的互相调用。
构造方法的互相调用可以提升构造方法中执行代码的可重用性。
范例:使用this()实现本类构造方法的互相调用
class Person {
private Stirng name; //人的姓名
private int age; //人的年龄
public Person { //【构造方法重载】无参函数
System.out.println("*** 一个新的Person类对象实例化了***");
}
public Person (String name) //【构造方法重载】单参函数
{
this(); //调用本类无参函数
this.name = name ; //设置name的值
}
public Person (String name ,int age) { //【构造方法重载】双参函数
this(name) ; //调用本类单参函数
this.age = age ; //设置age值
}
public void tell () {
System.out.println("姓名:" + this.name + "、年龄:" + this.age);
}
}
public class JavaDemo {
Person per = new Person("张三" ,12); //实例化Person类对象
per.tell(); //输出信息
}
/**
*程序执行结果:
*姓名:张三、年龄:12
**/
注意:
1、所有类的构造方法是在对象在实例化的时候被默认调用,而且在普通方法调用之前调用,所以用this()调用构造方法的操作,一定要放在构造方法的首行。否则会报错。
2、如果一个类中存在多个构造方法,而且这些构造方法都使用了this()互相调用,那么至少保留一个构造方法没有调用其它构造方法,以作为程序的出口。
3、this表示当前对象
对于正在访问类中方法的对象就可以成为当前对象,可以用this表示。
范例:实现消息发送逻辑
class Message {
private Channel channel ; //保存消息发送通道
private String content ; //消息内容
//【4】调用此构造实例化,此时channel = 主类ch
public Message (Channel channel, String content) {
this.channel = channel ; //保存消息通道
this.content = content ; //设置content属性
}
public void send () {
if(this.channel.isConnect() ) { //
System.out.println("【消息发送】content=" + this.content);
}
else {
System.out.println("【error】没有可用的连接通道,无法发送消息");
}
}
}
class Channel {
private Message message ; //信息发送有Message负责
//【2】实例化channel对象,调用构造方法,接收要发送的消息内容
public Channel (String content) {
//【3】实例化Message,但是需要将主类中的ch传递到Message中、this = ch
this.message = new Message(this,content);
this.message.send();
}
public boolean isConnect () { //判断连接是否创建
return true;
}
}
public class JavaDemo {
public static void main(String args[]) {
//【1】实例化一个Channel类对象,并且传入需要发送的消息内容
Channel channel = new Channel("我好喜欢你!") ; //实例化Channel对象并发送消息
}
}
/**
*程序运行结果:
*【消息发送】content = 我好喜欢你!
**/
本程序在Channel内部实例化了Message类对象,由于消息发送需要通过通道来实现,所以将Channel的当前对象this传递到了Message类,并利用Message.send()方法实现消息发送处理。
最后
以上就是阔达耳机为你收集整理的java中的this关键字java中的this关键字的全部内容,希望文章能够帮你解决java中的this关键字java中的this关键字所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复