2.4 static关键字
static:
用关键字static修饰的成员, 叫做静态成员
没有用关键字static修饰的成员, 叫做非静态成员
静态成员:
- 静态成员是属于类的, 在访问的时候, 需要用类来访问
- 静态成员开辟空间, 是在这个类第一次被加载到内存中的时候开辟的
非静态成员:
- 非静态成员是属于对象的, 在访问的时候, 需要用对象来访问
- 非静态成员开辟空间, 是在这个对象被实例化的时候开辟的
注意:
- 静态方法中, 不能直接访问非静态成员
- 在非静态的方法中, 可以直接访问静态的成员
class Person {
String name;
static int a;
void eat() {}
static void sleep() {}
}
class Program {
public static void main(String[] args) {
Person xiaomin = new Person();
// 访问非静态成员
xiaomin.name = "xiaomin";
xiaomin.eat();
// 访问静态成员
Person.a = 10;
Person.sleep();
// 注:
// 访问静态的成员, 也可以使用对象来访问, 但是会有警告
// 推荐使用类来访问静态成员
}
}
2.5 private关键字
- private是一个权限修饰符。
- private可以修饰成员(成员变量和成员方法)
- 被private修饰的成员只在本类中才能访问。
public class Student {
private String name;
private int age;
public void setName(String n) {
name = n;
}
public String getName() {
return name;
}
public void setAge(int a) {
age = a;
}
public int getAge() {
return age;
}
}
/*
* 测试类
*/
public class StudentTest {
public static void main(String[] args) {
//创建对象
Student s = new Student();
System.out.println(s.getName()+"***"+s.getAge());
//给成员变量赋值
s.setName("杨幂");
s.setAge(30);
System.out.println(s.getName()+"***"+s.getAge());
}
}
2.6 this关键字
this:代表所在类的对象引用,方法被哪个对象调用,this就代表那个对象;
使用场景:用于解决成员变量被隐藏的问题,也就是局部变量和成员变量重名;
public class Student {
private String name;
private int age;
public void setName(String name) {
//name = name;
this.name = name;
}
public String getName() {
return name;
//return this.name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
public class StudentTest {
public static void main(String[] args) {
// 创建对象
Student s = new Student();
System.out.println(s.getName() + "---" + s.getAge());
s.setName("孙俪");
s.setAge(30);
System.out.println(s.getName() + "---" + s.getAge());
}
}