基本用法
1) 它的使用方式有两种:
a) this.属性或 this.方法
b) this() 或 this(参数)
2) 它代表什么含义?
a) 当 this 以 “ this. ”方式出现时,它代表当前对象。
b)this() 代表默认构造器; this(参数)代表具有相同参数的构造器。
3) this使用时,应注意什么?
a) 当 this 以 this() 或 this(参数) 方式出现时,它必定出现在本类的构造器中,且必定在第一行。
b) this 关键字不能在静态方法中使用。
注意:
1.)一个类中,凡是非静态的成份均属于对象。因此,当对象不存在时,则这些成份不存在。
2.)在一个类的静态方法中,不可直接调用非静态的方法。
Demo
1.Employee:部门员工信息和能力
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">//部门员工: 信息和能力
//部分代码展示
public class Employee {
private String name;
private boolean sex;
private int age;
private double salary;
//准备一个计数器 (静态变量或类变量)===>>> 共享的
private static int counter = 0;
//当一个方法只针对静态变量操作时,是此方法必须用static修饰 。
public static int getCounter() {
return counter;
}
public Employee() {
//System.out.println("我是一个默认构造器!");
counter++;
}
public Employee( String name, boolean sex, int age, double salary ){
this(); //调用默认构造器,帮助当前构造器完成计数功能。
this.name = name;
this.sex = sex;
this.age = age;
this.salary = salary;
}
//设定器
public void setName(String name) {
this.name = name;
}
public void setSex(boolean sex) {
this.sex = sex;
}
public void setAge(int age) {
this.age = age;
}
public void setSalary(double salary) {
this.salary = salary;
}
//访问器
public String getName() {
return name;
}
public int getAge() {
return age;
}
public double getSalary() {
return salary;
}
public boolean getSex() {
return sex;
}
public int add( int x, int y ){
return x + y;
}
public String getInfo(){
return "姓名: " + name + " 性别: " + (sex ? "男":"女") + " 年龄: " + age + " 薪水: " + salary;
}
}
</span></span></span></span>
2.FlowerRose:卖花老板巧编程,无奸不商
白色情人节前晚,朋友准备送给对象红玫瑰,路过花店,询问价格,50元一朵。感觉有点儿坑,于是就没有买。一直往前走,再没有遇到过花店,于是乎,返之。又问其价,老板瞥一眼,说70元一朵,我俩瞬间无语。又朝另个方向走,无遇花店。又返之,问其价,老板再瞥一眼,说90元一朵。我俩相望一眼直接回去睡觉。想到今天的OOA,编此以作纪念那位难忘的奸商。
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">package com.hqg.oop.d32.d2;
public class FlowerRose {
private String name;
private double price;
public FlowerRose() {
}
public FlowerRose(String name, double price ) {
this.name = name;
this.price = price;
}
public void setName(String name) {
this.name = name;
}
public void setPrice(double price) {
this.price = price;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
//功能方法
public FlowerRose raisePrice(){
this.price += 20; //经典之处!
return this;
}
public String toString(){
return "花名: " + name + " 价格 : " + price + "元/支。";
}
//方法的重载
public static void add( int x, int y ){
System.out.println( x + y );
}
public static float add( float f1, float f2 ){
return f1 + f2;
}
}
====================================================
package com.hqg.oop.d32.d2;
public class FlowerRoseApp {
public static void main(String[] args) {
Flower f1 = new FlowerRose("rose", 50);
System.out.println( f1.toString() );
f1.raisePrice().raisePrice().raisePrice().raisePrice().raisePrice(); //花店老板的如意算盘
System.out.println( f1.toString() );
}
}</span></span></span></span>
业务思想
this关键字是很特殊的一个,无论是对方法的调用,还是对构造器的调用,我们都必须小心对待,稍有不慎或有欲哭无泪的感觉,这或许是其特殊之处的一个体现。
当然,面对this也无需胆怯,多加使用,才会体会到它的妙处,项目中的锻炼往往是最能提高的,而且是提高的很快、很扎实,不妨多去做,没有机会的话,可以多做一些demo,以作练手,待项目中更好的应对。