黑马程序员技术交流社区
标题:
this关键字用法总结
[打印本页]
作者:
王烽棋
时间:
2015-8-6 13:36
标题:
this关键字用法总结
this:Java关键字
含义:代表其所在方法所属类的对象的引用。
说明:this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。this的用法和其他对象的引用并无不同。注意,如果在方法内调用同一个类的 另 一个方法,就不必使用this。
使用:
局部变量隐藏成员变量:
/**
定义人
*/
abstract class Person
{
/**姓名年龄*/
private String name;
private int age;
/**吃饭*/
public abstract void eat();
/**无参构造方法*/
Person(){}
/**带参构造方法*/
Person(String name,int age){
this.name = name;
this.age = age;
}
/**set和get方法*/
public void setName(String name){
this.name = name;
}
public void setName(int age){
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
}
复制代码
返回当前引用:
public class Leaf{
int i = 0 ;
Leaf increment(){
i ++ ;
return this ;
}
void print(){
System . out . println("i ="+ i);
}
public static void main(String[] args){
Leaf x = new Leaf() ;
x . increment() . increment() . increment() . print() ;
}
}
复制代码
作为参数传递给其他方法:
/**创建人类*/
class Person
{
public void eat(Apple apple){
Apple peeled = apple.getPeeled();
System.out.println("Yummy");
}
}
/**创建削苹果类*/
class Peeler
{
static Apple peel(Apple apple){
return apple;//Peeled
}
}
/**创建苹果类*/
class Apple
{
Apple getPeeled(){
return Peeler.peel(this);
}
}
/**创建测试类*/
class PassingThis
{
public static void main(String[] args){
new Person().eat(new Apple);
}
}
复制代码
在构造方法中调用构造方法:
/**创建花类*/
class Flower
{
/**成员属性*/
int peatalCount = 0;
String s = "initial value";
/**空参构造函数*/
Flower(){
this("hi",47);
System.out.println("default constructor (no args)");
}
/**一个参数构造函数*/
Flower(int petals){
peatalCount = petals;
System.out.println("constructor w/int arg only,peatalCount ="+peatalCount);
}
/**一个参数构造函数*/
Flower(String ss){
s = ss;
System.out.println("constructor w/String arg only,s ="+s);
}
/**两个参数构造函数*/
Flower(String s,int petals){
this(petals);
//this(s); //Can't call two!
this.s = s;
System.out.println("String and int args only,s =");
}
/**打印属性*/
void printPetalCount(){
//this.(11); //Not inside non constructor!
System.out.println("peatalCount ="+peatalCount+"s ="+s);
}
public static void main(String[] args){
Flower x = new Flower();
x.printPetalCount();
}
}
复制代码
注意:this调用构造方法只能用在构造方法内的第一行,不可以在非构造方法内如此调用构造方法。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2