5.4.2 使用访问控制符

本文详细介绍了Java中的访问控制符(private、protected、public)及其在类成员中的应用,包括实例变量的隐藏、包访问权限、子类访问权限等,并通过示例代码展示了如何在实际场景中运用这些访问控制符,以及如何使用setter和getter方法进行数据验证和封装,强调了模块设计的高内聚、低耦合原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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修饰这些方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值