实现良好的封装,需要从两个方面考虑:
1 将对象的属性和实现细节隐藏起来,不允许外部直接访问。
定义了上面的Person类之后,该类的name和age属性只能在Person类内才可以操作和访问,在Person类之外只能
通过各自对应的setter和getter方法来操作和访问他们。
java中属性的setter和getter方法有非常重要的意义,如果一个Java类的每个属性都被使用private修饰,并为
每个属性都提供了public修饰setter和getter方法,这个类就是一个符合javaBean规范的类。
关于访问控制符的使用,规则如下:
1 类里的绝大部分属性都应该使用private修饰,除了一些static修饰的,类似全局变量的属性,才可能考虑使用public
修饰,除此之外,有些方法只是用于辅助是吸纳该类的其他方法,这些方法被称为工具方法,工具方法应该使用private修饰。
2 如果某一个类主要用做其他类的父类,该类里包含的大部分方法可能仅仅希望被其子类重新,而不想被外界直接调用,则应该使用
protected修饰这些方法。
3 希望暴露出来给其他类自由调用的方法应该使用public修饰,因此,类的构造器通过使用public修饰,暴露给其他类中创建
的对象,因为顶级类通常都希望被其他类自由使用,所以大部分顶级类都是public修饰。
1 将对象的属性和实现细节隐藏起来,不允许外部直接访问。
2 把方法暴露出来,让方法来操作或访问这些属性。
四个访问控制符
1 private访问控制级别:如果类里的一个成员(包括属性和方法)使用private访问控制符来修饰,
则这个成员只能在该类的内部被访问,很显然,这个访问控制符用于修饰属性最合适,使用它来修饰属性就
可以把属性隐藏在类的内部。
2 default访问控制权限:如果类里的一个成员(包括属性和方法)或者一个顶级类不使用任何访问控制
符修饰,我们就称它是默认访问控制,default访问控制的成员或顶级类可以被相同包下其他类访问。
3 protected访问控制权限(子类访问控制权限):如果一个成员(包括属性和方法)使用protected
访问控制符修饰,那么这个成员既可以被同一个包中其他类访问,也可以被不同包中的子类访问,通常情况下,
如果使用protected来修饰一个方法,通常是希望子类来重写这个方法。
4 public访问控制权限(公共访问权限):这个是最宽松的访问控制级别,可以访问任何。
package Agu3th;
public class Person {
private String name;
private int age;
public void setName(String name)
{
if(name.length() > 6 || name.length() < 2)
{
System.out.println("您设置的人名不符合要求");
return;
}
else
{
this.name = name;
}
}
public String getNmae()
{
return this.name;
}
public void setAge(int age)
{
if(age > 100 || age < 0)
{
System.out.println("您设置的年龄不合法");
return;
}
else
{
this.age = age;
}
}
public int getAge()
{
return this.age;
}
public static void main(String[] args) {
}
}
定义了上面的Person类之后,该类的name和age属性只能在Person类内才可以操作和访问,在Person类之外只能
通过各自对应的setter和getter方法来操作和访问他们。
java中属性的setter和getter方法有非常重要的意义,如果一个Java类的每个属性都被使用private修饰,并为
每个属性都提供了public修饰setter和getter方法,这个类就是一个符合javaBean规范的类。
关于访问控制符的使用,规则如下:
1 类里的绝大部分属性都应该使用private修饰,除了一些static修饰的,类似全局变量的属性,才可能考虑使用public
修饰,除此之外,有些方法只是用于辅助是吸纳该类的其他方法,这些方法被称为工具方法,工具方法应该使用private修饰。
2 如果某一个类主要用做其他类的父类,该类里包含的大部分方法可能仅仅希望被其子类重新,而不想被外界直接调用,则应该使用
protected修饰这些方法。
3 希望暴露出来给其他类自由调用的方法应该使用public修饰,因此,类的构造器通过使用public修饰,暴露给其他类中创建
的对象,因为顶级类通常都希望被其他类自由使用,所以大部分顶级类都是public修饰。