初识Java(三)
一、类和对象
Java语言是面向对象语言,通过对象与对象之间的交互,完成一个一个的任务。
例:要盖出一间房子,要有一张图纸。
类就好比是那张图纸,对象就好比是那一间房子。
房子是根据图纸盖出来的,对象是根据类创建出来的。
- 一个Java文件一般只定义一个类。
- public修饰的类要与文件名相同。
- 改变类名,通过设置去改,在文件中手写去改,只能改文件里面的,文件名不会改。
二、this引用
1、this引用 指向当前对象
由于this只存在于成员方法当中,所以当前对象指的是调用此成员方法的对象。所有对此方法中成员变量的操作,都是通过this完成的,只不过用户看不见,是编译器自动进行的。下面两个问题有利于对这句话的理解。
- 写出一个类,类中有成员变量和方法,实例化出了两个对象date和date2,去调用成员方法完成对象的赋值,那么此时,成员方法只有一个阿,但是对象有两个阿,它是怎么知道是对哪个对象赋值的呢?
public class Date {
private int year;
private int month;
private int day;
public void setDate(int y,int m,int d){
year = y;
month = m;
day = d;
}
public static void main(String[] args) {
Date date = new Date();
date.setDate(2001,5,7);
Date date1 = new Date();
date1.setDate(2001,5,13);
}
}
因为成员方法有一个隐藏的参数,这个参数是this,它是一个引用变量,简称this引用,当对象去调用成员方法时,对象的值会传给this,那么在成员方法内,它就会知道是给哪个对象赋值了。
public class Date {
private int year;
private int month;
private int day;
public void setDate(Date this,int y,int m,int d){
this.year = y;
this.month = m;
this.day = d;
//在成员方法中,给成员变量加上this
}
public static void main(String[] args) {
Date date = new Date();
date.setDate(2001,5,7);
Date date1 = new Date();
date1.setDate(2001,5,13);
}
}
- 当把值传给成员方法,形参接收后,发现形参与成员变量的名字相同时,那成员方法给谁赋值呢?是让形参给对象的变量赋值,还是让形参自己给自己赋值呢?
public class Date {
private int year;
private int month;
private int day;
public void setDate(int year,int month,int day){
year = year;
month = month;
day = day;
}
public static void main(String[] args) {
Date date = new Date();
date.setDate(2001,5,7);
Date date1 = new Date();
date1.setDate(2001,5,13);
}
}
根据局部变量优先原则,形参是局部变量,所以是优先给形参赋值。为了不让它识别为形参,在方法中的变量前加上this,代表是对象中的变量,也就是成员变量。
public class Date {
private int year;
private int month;
private int day;
public void setDate(int year,int month,int day){
this.year = year;
this.month = month;
this.day = day;
}
public static void main(String[] args) {
Date date = new Date();
date.setDate(2001,5,7);
Date date1 = new Date();
date1.setDate(2001,5,13);
}
}
2、this引用的特点
- 只存在于成员方法当中。
- 只能引用当前对象。
- 哪个对象调用,this的类型就是哪个对象的类型。
- this在成员方法中是隐藏的参数。
原文地址:https://blog.csdn.net/weixin_53908084/article/details/140673703
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!