封装:
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
封装的好处:
1)便于使用者正确使用系统,防止错误修改属性
2)有助于系统之间的松耦合,提高系统独立性
3)提高软件的可重用性
4)降低了构建大型系统的风险
封装的使用:
(1)使用private修饰要封装的内容
(2)提供getXxx/setXxx方法
(3)在setXxx方法里对数据进行判断操作
public class Person {
//定义属性
private String name;
private int age;
private char gender;
private double height;
private double weight;
private String phoneNumber;
private String address;
private String hobby;
private String country;
private String job;
private String email;
//无参构造方法
public Person() {
super();
}
//有参构造方法
public Person(String name, int age, char gender, double height,
double weight, String phoneNumber, String address, String hobby,
String country, String job, String email) {
super();
this.name = name;
this.age = age;
this.gender = gender;
this.height = height;
this.weight = weight;
this.phoneNumber = phoneNumber;
this.address = address;
this.hobby = hobby;
this.country = country;
this.job = job;
this.email = email;
}
//
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
类成员的访问修饰
修饰符 | 同一个类中 | 同一个包中 | 子类中 | 任何地方 |
private | 可以 | 不可以 | 不可以 | 不可以 |
默认修饰符 | 可以 | 可以 | 不可以 | 不可以 |
protected | 可以 | 可以 | 可以 | 不可以 |
public | 可以 | 可以 | 可以 | 可以 |
static变量:
类的成员变量包括
类变量(静态变量)
被static修饰的变量,在内存中只有一个拷贝
类内部,可在任何方法内直接访问静态变量
其他类中,可以直接通过类名访问
实例变量
没有被static修饰的变量
每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响
static方法:
静态方法:可直接通过类名访问
静态方法中不能使用this和super
不能直接访问所属类的实例变量和实例方法
可直接访问类的静态变量和静态方法
实例方法:通过实例访问
可直接访问所属类的静态变量、静态方法、实例变量和实例方法
静态方法必须被实现(main()就是最常用的静态方法)