回顾
14.3 匿名内部类
14.4 匿名对象
学习小结
14.5 this关键字的使用
this 表示当前对象,即调用类中方法或属性的那个对象。
范例 14-13:在构造方法中声明与方法同名参数
class Person{
private String name;
private int age;
public Person(String name, int age){
name = name;
age = age;
}
}
范例 14-14:this关键字的使用范例1
class Person{
private String name;
private int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
}
范例 14-15:this关键字的使用范例2
package com.Javastudy2;
/**
* @author Y.W.
* @date 2018年3月13日 下午10:37:48
* @Description TODO this关键字的使用范例2
*/
public class P369_14_15 {
public static void main(String[] args) {
Person32 p = new Person32("张三", 25);
System.out.println(p.talk());
}
}
class Person32 {
private String name;
private int age;
public Person32(String name, int age) {
this.name = name;
this.age = age;
}
public String talk() {
return "我是:" + name + ",今年:" + age + "岁!";
}
}
运行结果:
范例 14-16:利用This判断两个对象是否想等
package com.Javastudy2;
/**
* @author Y.W.
* @date 2018年3月13日 下午10:37:48
* @Description TODO 利用This判断两个对象是否想等
*/
public class P370_14_16 {
public static void main(String[] args) {
Person33 p1 = new Person33("张三", 30);
Person33 p2 = new Person33("张三", 30);
System.out.println(p1.compare(p2) ? "相等,是同一个人!" : "不相等,不是同一个人!");
}
}
class Person33 {
String name;
int age;
Person33(String name, int age) {
this.name = name;
this.age = age;
}
boolean compare(Person33 p) {
if (this.name.equals(p.name) && this.age == p.age) {
return true;
} else {
return false;
}
}
}
运行结果:
想用某一个构造方法调用另一个构造方法,可以用this实现:
this()
范例 14-17:用this调用构造方法
package com.Javastudy2;
/**
* @author Y.W.
* @date 2018年3月13日 下午10:37:48
* @Description TODO 用this调用构造方法
*/
public class P371_14_17 {
public static void main(String[] args) {
new Person34("张三", 25);
}
}
class Person34 {
String name;
int age;
Person34() {
System.out.println("1.public Person()");
}
Person34(String name, int age) {
// 调用本类无参构造方法
this();
this.name = name;
this.age = age;
System.out.println("2.public Person(String name, int age)");
}
}
运行结果:
14.6 static 关键字的使用
14.6.1 使用static定义属性
用static定义属性,则此变量称为静态变量。
范例 14-18:静态属性的声明引例
package com.Javastudy2;
/**
* @author Y.W.
* @date 2018年3月13日 下午11:29:13
* @Description TODO 静态属性的声明引例
*/
public class P373 {
public static void main(String[] args) {
Person35 p1 = new Person35("张三", "中国", 25);
Person35 p2 = new Person35("李四", "中国", 30);
Person35 p3 = new Person35("王五", "中国", 35);
System.out.println(p1.talk());
System.out.println(p2.talk());
System.out.println(p3.talk());
}
}
class Person35 {
String name;
String city;
int age;
public Person35(String name, String city, int age) {
this.name = name;
this.city = city;
this.age = age;
}
public String talk() {
return "我是:" + this.name + ",今年:" + this.age + "岁,来自:" + this.city;
}
}
运行结果:
范例 14-19:static关键字的使用
package com.Javastudy2;
/**
* @author Y.W.
* @date 2018年3月13日 下午11:29:13
* @Description TODO static关键字的使用
*/
public class P374_14_19 {
public static void main(String[] args) {
Person36 p1 = new Person36("张三", 25);
Person36 p2 = new Person36("李四", 30);
Person36 p3 = new Person36("王五", 35);
System.out.println("修改之前信息:" + p1.talk());
System.out.println("修改之前信息:" + p2.talk());
System.out.println("修改之前信息:" + p3.talk());
System.out.println("********修改之后信息:********");
// 修改后信息
p1.city = "美国";
System.out.println("修改之后信息:" + p1.talk());
System.out.println("修改之后信息:" + p2.talk());
System.out.println("修改之后信息:" + p3.talk());
}
}
class Person36 {
String name;
static String city = "中国";
int age;
public Person36(String name, int age) {
this.name = name;
this.age = age;
}
public String talk() {
return "我是:" + this.name + ",今年:" + this.age + "岁,来自:" + this.city;
}
}
运行结果:
思考
上面其中一例中,this()的调用本类中的无参构造方法。
记于2018年3月13日23:53:19
Yvan