[英]The difference between this and the class name
我问过这个问题, 将对象添加到数组中 。 现在,它提出了另一个问题。
两者之间有区别吗?
public Patient(String ptNo, String ptName, int procType) throws IOException
{
Patient.patientNo = ptNo;
Patient.patientName = ptName;
Patient.procedureType = procType;
}
和这个:
public Patient(String ptNo, String ptName, int procType) throws IOException
{
this.patientNo = ptNo;
this.patientName = ptName;
this.procedureType = procType;
}
我以为他们是同一回事?
编辑我已经在Patient类中创建了这些。
private static String patientNo;
private static String procedureDate;
private static String patientName;
this
用于访问属于对象的属性,而Classname用于访问属于类的属性。 属于类/ static
属性的属性意味着所有对象都将共享这些属性。
建议阅读: 了解实例和类成员
您可以使用this
来访问类的非静态成员,而ClassName
用于访问静态成员。 类的非静态字段对于该类的每个实例都是唯一的,而static
字段对于所有实例都是公共的。
class Test{
String txt;
static String sTxt;
public Test(String t) {
this.txt = t; // accessing the instance variable using this
}
}
class Test2{
void someMethod(){
Test t = new Test("someString");
Test.sTxt; // Accessing the static member, using classname
}
}
public Patient(String ptNo, String ptName, int procType) throws IOException
{
Patient.patientNo = ptNo;
Patient.patientName = ptName;
Patient.procedureType = procType;
}
仅当所有三个变量都是静态的时,此代码才有效
public class Patient
{
static String patientNo;
static int procedureType;
static String patientName;
public Patient(String ptNo, String ptName, int procType) throws IOException
{
Patient.patientNo = ptNo;
Patient.patientName = ptName;
Patient.procedureType = procType;
}
}
像这样
public Patient(String ptNo, String ptName, int procType) throws IOException
{
this.patientNo = ptNo;
this.patientName = ptName;
this.procedureType = procType;
}
将适用于非静态变量,“ this”仅用于避免混淆,它表示正在调用其构造函数的对象。 例
Patient p = new Patient("A","B",1);
就像说
p.patientNo = ptNo;
p.patientName = ptName;
p.procedureType = procType;
编辑
在这样的情况下救援
public class Patient
{
String patientNo;
int procedureType;
String patientName;
public Patient(String patientNo, String patientName, int procedureType) throws IOException
{
this.patientNo = patientNo; // variables in LHS are class members, RHS are method parameters
this.patientName = patientName;
this.procedureType = procedureType;
}
}
this
是用来访问对象属性。 它通常用于访问类的非静态变量,因为它们与对象相关联。
className
通常用于访问静态变量,因为静态变量与类相关联。
静态变量在类加载时初始化,其中仅当创建类对象时才将作为对象变量的对象初始化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.