Java基础整理--------封装
先介绍下访问修饰符:
公共的,用public修饰的类、属性、方法,在同项目工程下的所以类均可以访问
私有的,用private修饰的类、属性、方法,只能在本类中可以访问,工程其他地方均不能访问。
受保护的,用protected修饰的类、属性、方法,同包内的类以及继承了该类的子类(其他包也包括)能访问。
什么都不写,如果一个类、属性、方法没有写以上任何修饰符,则表示默认缺省。只能同包下的类才能访问。重点突出包的概念。
面向对象的三大特征:封装、继承、多态
封装是指将对象的状态信息(属性)隐藏在对象内部,通过对象提供的方法对其属性进行操作和访问
将一些实现细节包装,隐藏起来,只留一些接口使之与外界联系。
在创建一个对象的时候,可以通过修改对象中属性的访问修饰符,来达到信息隐藏。
public class Person {
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private int age;
/**
* 爱好
*/
private String hobby;
}
在上面person对象中,name、age、hobby属性的访问级别设置为的是private(私有的),只能本类访问,在其他地方获取属性值不能使用对象.属性的方式了,这就对person的信息进行了初步的隐藏。
需要提供一些接口(公共的方法来使之于外界联系),对Person对象中的每个属性值提供对外的公共方法访问,使其通过访问方法从而获取属性的值和对属性赋值。
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 String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
这些修饰符为public的方法被称之为getter、setter方法,这样其他类想要访问Person中的属性就只能通过访问这些方法。
如果有其他类调用Person方法中的属性,你想对属性的赋值做一些限制,那么就可以在该属性的setter方法中添加代码。如Person的age必须是一个大于零的数。那么:
public void setAge(int age) {
if(age<0) {
System.out.println("年龄必须是大于零的");
}else {
this.age = age;
}
}