在C++中有this指针调用格式是this->,因为java中没有指针,所以在java中将this命名为关键字来使用,主要的作用是为了突出属性或者方法是当前对象的,区分形参与属性,尤其是方法中形参和属性名字相同时,再一个作用是在构造器中(C++中叫构造函数)调用其他的构造器,this(形参列表),通过形参列表的不同调用不同的构造器,也有一些规定,比如一个构造器只能调用一个另外的构造器,this(形参列表)这句代码必须在构造器的第一行等等,还有在对象中如果将对象作为形参传入方法,用可直接用this关键词去代替那个形参,强调是当前对象。如下面的小例子:
Boys类 :
package OOPKeyWords; public class Boys { private String name; private int age; public Boys() { } public Boys(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void Marry(Grils girl) { System.out.println("我想娶"+girl.getName()); } public void shout() { if(age>22) { System.out.println("你可以去登记结婚了"); }else { System.out.println("年龄不够,先谈恋爱"); } } }
Grils类:
package OOPKeyWords; public class Grils { private String name; private int age; public Grils() { } public Grils(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void marry(Boys boy) { System.out.println("我想嫁给"+boy.getName()); boy.Marry(this);//此处的this指的是娶得当前的女孩 } public int compare(Grils gril) { if(this.age>gril.age) { return 1; } else if(this.agemain函数:
package OOPKeyWords; public class BoyGrilTest { public static void main(String[] args) { Boys boy=new Boys("罗密欧",18); boy.shout(); Grils gril=new Grils("朱丽叶",18); gril.marry(boy); Grils gril1=new Grils("祝英台",19); int compareResult=gril.compare(gril1);//gril是当前对象 System.out.println(compareResult); } }结果:
年龄不够,先谈恋爱
我想嫁给罗密欧
我想娶朱丽叶
-1其中第三句中朱丽叶就是当前的对象,对应于代码中Grils类中的this关键字,此处两个类中的方法相互以另一个类的对象作为形参,更好的体现了this关键字的使用情况。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)