从零开始学Java系列教程(一):封装

封装的引入

我要看电视,只需要按一下开关和换台就可以了。有必要了解电视机内部的结构吗?有必要碰碰显像管吗?制造厂家为了方便我们使用电视,把复杂的内部细节全部封装起来,只给我们暴露简单的接口,比如:电源开关。具体内部是怎么实现的,我们不需要操心。

需要让用户知道的才暴露出来,不需要让用户知道的全部隐藏起来,这就是封装。从java的角度上来分析,封装是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式

封装的优点

1、 提高代码的安全性。

2、 提高代码的复用性。

3、 使用时,只需要了解访问方式,不需要知道内部实现细节。

封装原则:

1、将不需要对外提供的内容都隐藏起来。

2、把属性都隐藏,提供公共方法对其访问。

1.1 访问控制符

Java中使用“访问控制符”来控制哪些细节需要封装,哪些细节需要暴露的。

下面详细讲述它们的访问权限问题,如下表所示:

访问权限修饰符    
修饰符同一个类同一个包子类所有类
private*   
default**  
protected*** 
public****

private:表示私有的,作用范围是当前类(类可见性)。

default:表示默认的,作用范围是当前类+当前包(包可见型)。

----->注意:权限修饰符中,没有default关键字,“默认的”权限只需省略权限修饰符即可。

protected:表示受保护的,作用范围是当前类+当前包+其它包中的子类(子类可见性)。

public:表示公开的,作用范围是是当前类+当前包+其它包(项目可见性)。


 

权限修饰符如何使用???

a)private、default、protected和public都可以修饰成员变量、静态变量、成员方法和静态方法。

成员变量:一般使用private来修饰。

静态变量:一般使用public来修饰。

成员方法:如果需要外界访问,则使用public修饰;如果只为当前类服务,则使用private修饰。

静态方法:一般使用public来修饰。

 

b)private、default、protected和public还可以修饰构造方法。

如果这个类需要实例化,,那么该类的构造方法建议使用public修饰。

如果这个类不需要实例化,那么该类的构造方法必须使用private修饰。

--> 工具类一般不需要被实例化,那么我们工具类中的构造方法我们使用private修饰,例如:Arrays。

 

c)我们可以使用default和public来修饰类,注意private和protected不能修饰类。

一个源文件中,最多只能有一个类使用public来修饰。

使用public修饰的类,源文件名字必须和类名保持一致。

 

我们在操作属性时,通常会对数据进行封装,这样就可以增加了数据访问限制,增加了程序可维护性。那么如何给使用private修饰的成员变量进行赋值呢?

这里就需要使用get/set方法来访问相关属性了

1、使用set方法实现对属性的赋值操作;

语法:

public void setAge(int age) {

    this.age = age;

}

注意事项:

  • a)setter方法肯定是成员方法,并且一定使用public修饰。

  • b)通过setter实现赋值之前,我们可以先判断赋值的内容是否合法。

     

2、使用get方法实现对属性的取值操作。

语法:

public int getAge() {

    return this.age;

}

注意事项:

  • a)getter方法肯定是成员方法,并且一定使用public修饰。

  • b)通过getter方法获取成员变量值时,我们还可以对获取的数据做统一的操作。

  • c)如果成员变量为boolean类型,那么getter方法就应该特殊定义处理。

    例如:Student类型中有一个boolean类型的成员变量marry,则getter方法为:

    public boolean isMarry() {
    
        return marry;
    
    }

     

补充:自动生成get/set方法快捷键:alt + insert

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值