5.4.2 使用访问控制符

来源:互联网 发布:数据结构出栈算法 编辑:程序博客网 时间:2024/06/05 01:58

Java提供了三个访问控制符:private、protected和public
private(当前类访问权限)
很显然,这个访问控制符用于修饰成员变量最合适,使用它来修饰成员变量就可以把成员变量隐藏在该类的内部。
default(包访问权限)
protected(子类访问权限)
public(公共访问权限)
外部类只能有两种访问控制级别:public和默认,外部类不能使用private和protected修饰,因为外部类没有处于任何类的内部,也就没有其所在类的内部、所在类的子类两个范围,因此private和protected访问控制符对外部类没有意义。

package chap5_3;public class Person {    private String name;    private int age;    public String getName() {        return name;    }    public void setName(String name) {        if (name.length() > 6 || name.length() < 2) {            System.out.println("您设置的人名不符合要求");            return;        } else {            this.name = name;        }    }    public int getAge() {        return age;    }    public void setAge(int age) {        if (age > 100 || age < 0) {            System.out.println("您设置的年龄不合法");            return;        } else {            this.age = age;        }    }}
package chap5_3;public class PersonTest1 {    public static void main(String[] args)    {        Person p=new Person();        p.setAge(1000);        System.out.println("未能设置age成员变量时:"+p.getAge());        p.setAge(30);        System.out.println("成功设置age成员变量后:"+p.getAge());        p.setName("李刚");        System.out.println("成功设置name成员变量后:"+p.getName());    }}

运行结果

您设置的年龄不合法未能设置age成员变量时:0成功设置age成员变量后:30成功设置name成员变量后:李刚

Java中某个类里包含了一个名为abc的实例变量,则其对应的setter和getter方法名应为setAbc()和getAbc()。JavaBean总是一个封装良好的类。
使用setter方法从而保证Person类的name和age两个实例变量不会出现与实际不符的情况。
进行程序设计时,应尽量避免一个模块直接操作和访问另一个模块的数据,模块设计追求高内聚,低耦合。
例如外部设备(主机板)只能通过内存条的金手指(提供一些方法供外部调用)来和内存条进行交互。
有些方法只用于辅助实现该类的其他方法,这些方法被称为工具方法,工具方法也应该使用private修饰。
如果某个类主要用作其他类的父类,该类里包含的大部分方法可能仅希望被其子类重写,而不向被外界直接调用,则应该使用protected修饰这些方法。

0 0