7.4
this关键字使用
1)使用原因:
避免如下的尴尬
public void setName(String name){
name = name;//都成局部变量,error
this.name = name;//第一个name为类的属性,第二个为局部变量
}
2)用法
1.在方法内部使用,即这个方法所属对象的引用;
2.在构造器内部使用,表示该构造器正在初始化的对象
this表示当前对象,可以调用类的属性、方法和构造器
1.当形参与成员变量重名时,如果在方法内部需要使用成员变量,必须添加this来表明该变量时类成员
2.在任意方法内,如果使用当前类的成员变量或成员方法可以在其前面添加this,增强程序的阅读性
class Person{ // 定义Person类
private String name ;
private int age ;
public Person(String name,int age){
this.name = name ;
this.age = age ; }
public void getInfo(){
System.out.println("姓名:" + name) ;
this.speak();
}
public void speak(){
System.out.println(“年龄:” + this.age);
}
}
3.this可以作为一个类中,构造器相互调用的特殊格式
class Person{ // 定义Person类
private String name ;
private int age ;
public Person(){ // 无参构造
System.out.println("新对象实例化") ;
}
public Person(String name){
this(); // 调用本类中的无参构造方法
this.name = name ;
}
public Person(String name,int age){
this(name) ; // 要放在首行,显式调用当前类有一个参数的构造方法
this.age = age;
}
public String getInfo(){
return "姓名:" + name + ",年龄:" + age ;
} }
注意:
1.使用this()必须放在构造器的首行!
2.使用this调用本类中其他的构造器,保证至少有一个构造器是不用this的。
7.5/7.6待补 程序练习
7.7
JavaBean是一种Java语言写成的可重用组件。
所谓javaBean,是指符合如下标准的Java类:
1)类是公共的
2)有一个无参的公共的构造器
3)有属性,且有对应的get、set方法(封装)
UML图
包对应于文件系统的目录,package语句中,用 “.” 来指明包(目录)的层次(一层目录);
包内部类不重名
为使用定义在不同包中的Java类,需用import语句来引入指定包层次下所需要的类或全部类(.*)。import语句告诉编译器到哪里去寻找类。
语法格式:
import 包名[.子包名…]. <类名 |*>
应用举例:
import p1.Test; //import p1.*;表示引入p1包中的所有类
public class TestPackage{
public static void main(String args[]){
Test t = new Test(); //Test类在p1包中定义
t.display();
}
}
可以使用import lee.* ;语句,表明导入lee包下的所有类。而lee包下sub子包内的类则不会被导入。import lee.sub.*;
import语句不是必需的,可坚持在类里使用其它类的全名
JDK 1.5加入import static语句//导入类静态属性或方法
如下所示
import static java.lang.System.out