JAVA-面向对象的封装性

本文详细介绍了JAVA中面向对象的封装性,包括封装的定义、原因、实现方式、访问入口的定义以及封装带来的好处。通过对类中的信息进行私有化保护,使用setter和getter方法作为访问入口,封装确保了数据的安全性和正确性,提高了代码的复用性和适应性。
摘要由CSDN通过智能技术生成

目录

1、什么是封装?

2、为什么封装?

3、如何实现封装?

4、访问入口如何定义?

5、封装有什么好处?


面向对象的三个特性:封装、继承、多态,本章对其封装性进行分析。

1、什么是封装?

         封装,简单的理解就是将某一类对象的信息和操作进行一定的保护处理,避免其他类可以随意的不受限制的访问该类中的信息,同时隐藏底层实现的细节,只对外提供简单的操作入口,其他类通过该入口进行信息的获取和修改。

2、为什么封装?

         以学生类为例:学生类中包含一个sno状态信息

public class Student {
    int sno;  //学号
}

        主方法如下:

public class test04 {
    public static void main(String[] args) {
        Student stu=new Student();
        stu.sno=-1234;
        System.out.println(stu.sno);
    }
}

        运行结果:成员整形类型变量未被赋值之前,默认值为0

0
-1234

Process finished with exit code 0

        后人为的对其进行赋值,但是从现实理论上讲,学号不可能为负数,这样的话,就造成了对数据信息的非法的访问,可以发现外部可以对Student类中的数据信息进行随意的访问和修改,这样的话,不能有效的保证数据信息的正确性和有效性。

        为了避免这类问题,出现了封装的功能。

3、如何实现封装?

        关键字:private

        ①首先将类中的状态信息私有化,即在定义变量时,修饰符列表为private进行修饰,表示私有的,(如果没有写明修饰符,那么默认是public)用该修饰符修饰的状态信息和动作信息都只隶属于当前类,只能在本类中进行访问。

        ②为私有的信息和方法提供简单的操作入口,使外部类能够通过规定的方式进行访问。对外提供两个公开的方法,因为对于数据信息的访问通常是读取和赋值两种,即分别对应的是Set和Get方法,为其他类提供访问入口。

4、访问入口如何定义?

        如下代码所示:属性被设置为私有的,然后通过公有的方法进行访问

public class Student {
    private int sno;  //学号
    private String sname;  //姓名

    public int getSno(){
        return  sno;
    }
    public void setSno(int sno){
        this.sno=sno;
    }
}

        主方法:通过公有的方法,结合参数、返回值、赋值操作,完成私有属性的获取或者修改操作。

public class test04 {
    public static void main(String[] args) {
        Student stu=new Student();
        System.out.println(stu.getSno());
        stu.setSno(-1234);
        System.out.println(stu.getSno());
    }
}

        输出结果:

0
-1234

Process finished with exit code 0

        那么上述例子依旧是一个灵活得方法,还是该访问访问,该任意赋值任意赋值啊,但是注意get和set是方法,方法中可以通过编写一定的逻辑代码来进行限定约束,保证逻辑的正确性,这才是封装的最佳用法,封装并过滤。 

        在定义方法时,注意setXxx(参数)方法是设置值的,需要用户传进来一个值,借助参数去接收这个值,所以该方法需要设置参数,但是不需要返回值,因为无需接收数值。但是getXxx()方法就需要返回值,因为调用该方法的时候一般是获取某个值,所以需要借助返回值来获取该值,但是不需要参数列表,因为只对数据通过返回值的方式进行接收。

        方法定义命名规范:操作名+属性名首字母大写(),两个方法没有static关键字,是常规得方法

        复习:

        没有static修饰符修饰的方法和属性都依赖于实例而存在,只能通过实例进行调用。

        所以总的来说,其实封装就是私有的信息外部不能直接进行访问

5、封装有什么好处?

        ①隐藏了底层的实现细节,调用者只能通过固定的操作入口对信息进行访问,一定程度上简化了操作,例如:照相机,我们不需要明白其内部的实现细节,通过一定的按键操作即可以完成使用。

        ②只有封装了,才算真正的对象,算真正的“独立体”,否则如果可以任意进行访问,就不能称之为独立体,例如:人之所以称之为个体,正是因为人对于自身内心的封装,有所保留。

        ③ 如果足够的独立,那么代码的复用性就会提高,具有更强的适应性。

        ④保证了安全,保证信息的安全性和准确性,封装后,外部类无法直接的对信息进行访问,而是会受到编写者编写的一定的限制的约束。例如:电视机如果没有进行封盖处理,那么会很容易弄坏,如果进行了“封装”,一定程度上保证设备的安全性,这里也同理。

        所以建议对类进行封装处理,保证内部数据信息的正确性和安全性,注意封装后,一定要对相关的数据的访问和获取提供相关的入口,因为通常这些信息都是具有一定作用的,对于这些信息的操作通常有两种(1、读取;2、赋值),如果封装后不提供一定的访问入口,就过于封闭了,这些数据可能会失去意义,所以我们要提供一些访问这些数据的方法,借助公有的方法去访问私有的信息,完成封装。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值