this
表示当前对象
谁调用方法谁就是当前对象
用static修饰的代码块里面不能使用this
方法里面有一个和字段同名的局部变量时,不能省略this
this还可以用于构造器里面调用构造器:
this(参数...);
例:
1 public class Dog { 2 //颜色 3 String color; 4 //名称 5 String name; 6 //体重 7 int weight; 8 9 public Dog(){} 10 public Dog(String color,String name,int weight){ 11 this.color = color; 12 this.name = name; 13 this.weight = weight; 14 } 15 16 public String getColor(){ 17 return color; 18 } 19 public void setColor(String color){ 20 this.color = color; 21 } 22 23 public static void main(String[] args) { 24 25 Dog dog = new Dog(); 26 dog.setColor("red"); 27 28 System.out.println( dog.getColor()); //red 29 } 30 }
dog.setColor("red");
这行代码dog调用了setColor()方法,即里面那个this指向的就是当前调用的那个对象即dog;
若setColor()方法没有使用this而是color = color,那么利用getColor()获取到的则是空,因为他们字段名相同,都是把自己赋值给自己。
当在类里面增加这两个构造器时:
public Dog(String color){
this.color = color;
}
public Dog(String color,String name){
this.color = color;this.name = name;
}
我们可以使用构造器里面调用构造器即
this(name);
那么
public Dog(String color,String name){
this.color = color;// this.name = name;this(name);
}
还可以this(color,name);
public Dog(String color,String name,int weight){
// this.color = color;//this.name = name;//这两行代码可以使用这一句来代替this(color,name);this.weight = weight;
}
访问修饰符:
public(公共的): 公共访问权限,任何地方你都能访问,能继承子类
private(私有的):私有的访问权限也叫类访问权限,只能在本类内部可以访问,不能继承到之类
default(包访问):包访问权限,什么修饰符都不写就是默认的包访问权限,奔雷内部可以访问,同包的其他类可以访问,同包可以继承
protected(受保护):受保护的访问权限也叫子类访问权限,本类内部可以访问,不同包的子类可以访问,同包的其他类可以访问,能继承到子类
修饰符
|
类内部
|
同一个包
|
子类 |
任何地方
|
public
|
√ |
√
|
√
|
√
|
protected
|
√
|
√
|
√
|
|
default
|
√
|
√
|
|
|
private
|
√
|
|
|
|