Java 基础(JavaBean, 关键字-this)
JavaBean
JavaBean 是一种 Java 语言写成的可重用组件。
所谓 JavaBean,是指符合如下标准的 Java 类:
- 类是公共的
- 有一个无参的公共的构造器
- 有属性,且有对应的 get,set方法
用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。
package com.klvchen.java1;
public class Customer {
private int id;
private String name;
public Customer() {
}
public void setId(int i) {
id = i;
}
public int getId() {
return id;
}
public void setName(String n) {
name = n;
}
public String getName() {
return name;
}
}
关键字-this
在 Java 中,this 关键字比较难理解,它的作用和其词义很接近。
- 它在方法内部使用,即这个方法所属对象的引用;
- 它在构造器内部使用,表示该构造器正在初始化的对象。
this 表示当前对象,可以调用类的属性,方法和构造器
什么时候使用 this 关键字?
当在方法内需要调用到该方法的对象时,就用 this。具体的:我们可以使用 this 来区分局部变量和属性。
比如: this.name = name;
this 关键字的使用:
-
this 可以用来修饰:属性,方法,构造器
-
this 修饰属性和方法
this 理解为: 当前对象 或 当前正在创建的对象在类的方法中,我们可以使用 "this.属性" 或 "this.方法" 的方式,调用当前对象属性或方法。
在类的方法中,我们可以使用 "this.属性" 或 "this.方法" 的方式,调用当前对象属性或方法。但是通常情况下,我们都选择省略"this."。特殊情况下,如果方法的形参和类的属性同名时,我们必须显式的使用"this.变量"的方式,表明此变量是属性,而非形参。
在类的构造器中,我们可以使用 "this.属性" 或 "this.方法" 的方式,调用当前正在创建的对象属性或方法。但是,通常情况下,我们都选择省略"this."。特殊情况下,如果构造器的形参和类的属性同名时,我们必须显的使用 "this.变量" 的方式,表明此变量是属性,而非形参。
-
this调用构造器
- 我们在类的构造器中,可以显式的使用 "this(形参列表)"方式,调用本类中指定的其他构造器
- 构适器中不能通过 "this(形参列表)" 方式调用自己
- 如何一个类中有 n 个构造器,则最多有 n-1 构造器中使用了 "this(形参列表)"
- 规定: "this(形参列表)" 必须声明在当前构造器的首行
- 构造器内部,最多只能声明一个 "this(形参列表)", 用来调用其他的构造器
public class PersonTest {
public static void main(String[] args) {
Person p1 = new Person();
p1.setAge(1);
System.out.println(p1.getAge());
System.out.println("==========================================");
Person p2 = new Person("Jerry", 20);
}
}
class Person{
private String name;
private int age;
public Person() {
this.eat();
String info = "Person 初始化时,需要考虑如下 1,2,3,4...(并行40行代码)";
System.out.println(info);
}
public Person(String name) {
this();
this.name = name;
}
public Person(int age) {
this();
this.age = age;
}
public Person(String name, int age) {
this(age);
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void eat() {
System.out.println("人吃饭");
this.study();
}
public void study() {
System.out.println("人学习");
}
}
运行结果: