this关键字表示对象本身,用它可引用当前对象的成员变量、成员方法和构造方法,可用于以下三种情况:
用来调用该类的另一个构造方法,格式为this( [paramList])。
调用类中的成员变量,格式为this.variableName,可以解决局部变量与成员变量同名的问题,解决方法参数与成员变量同名的问题。
调用类中的成员方法,格式为this.methodName([paramList])。
Student类
public class Student{
public Student() {
System.out.println("Student无参构造方法...");
}
public Student(String name){
this(); //调用无参构造方法
this.name = name;
}
public String name;
public void hello(){
System.out.print("你好,");
}
public void showName(){
this.hello(); //调用成员方法
System.out.println("我的名字是" + this.name);
}
}
测试类
public class TestStudent {
@Test
public void test(){
Student stu = new Student("张三");
stu.showName();
}
}
类(也包括接口和枚举等)的访问权限通过访问修饰符实现,类的访问修饰符可以是public或缺省。
如果类用public修饰,则该类称为公共类,公共类可以被任何包中的类使用,如果类用缺省修饰符,该类只能被同一包中其它类使用。
public class Person { //public修饰符
public void show(){
System.out.println("person类");
}
}
class Student{ //缺省修饰符
public void show(){
System.out.println("student类");
}
}
public class Test1 {
@Test
public void test(){
Person per = new Person();
per.show();
Student stu = new Student();
stu.show();
}
}
public class Test2 {
@Test
public void test(){
Person per = new Person();
per.show();
Student stu = new Student(); //异常,Student类为缺省修饰符,其他包无法访问该类
stu.show();
}
}
类成员的访问权限包括成员变量和成员方法的访问权限,共有4个修饰符,分别是public、protected、缺省的和private。
成员访问权限如下:
修饰符 |
同一个类 |
同一个包的类 |
不同包的子类 |
不同包的其它类 |
public |
√ |
√ |
√ |
√ |
protected |
√ |
√ |
√ |
|
缺省的/默认的 |
√ |
√ |
||
private |
√ |
Person类,com.wfit.test7.Person.java
public class Person {
public void showPublic(){
System.out.println("show public");
}
protected void showProtected(){
System.out.println("show protected");
}
void show(){
System.out.println("show 缺省的");
}
private void showPrivate(){
System.out.println("show private");
}
public void test(){
this.showPublic();
this.showProtected();
this.show();
this.showPrivate();
}
}
同一个包的类,com.wfit.test7.TestPerson.java
public class TestPerson {
@Test
public void test(){
Person per= new Person();
per.showPublic();
per.showProtected();
per.show();
//per.showPrivate();
}
}
不同包的子类,com.wfit.test8.Student.java
public class Student extends Person {
public void test(){
super.showPublic();
super.showProtected();
//super.show();
//super.showPrivate();
}
}
不同包的其它类,com.wfit.test8.TestPerson.java
public class TestPerson {
@Test
public void test(){
Person per= new Person();
per.showPublic();
//per.showProtected();
//per.show();
//per.showPrivate();
}
}