Day05_23_封装

封装

  • 什么是封装?

    • 封装可以被认为是一个类的保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。封装最主要的功能在于我们能修改自己的实现代
      码,而不用修改那些调用我们代码的程序片段。

    • 封装的核心就是属性私有化 。private修饰符: private表示私有化一个类的属性,用private修饰的属性只能在本类中访问到,在其他的类中无法进行直接访问。

  • 封装的意义?

    • 良好的封装能够减少耦合。

    • 类内部的结构可以自由修改。

    • 可以对成员变量进行更精确的控制。

    • 隐藏信息和实现的细节。

      • 提高程序安全性保护数据

      • 统一接口

  • 封装的步骤

     - 将所有属性私有化。使用private关键字对属性进行修饰,所修饰的所有数据只能在本类中访问。
     
     - 对外提供两个公开的方法,分别是Set方法和Get方法,修改属性用Set方法,读取属性用get方法。使以后类中的属性可以被访问,但必须通过此入口进行访问。
    
     - 因为属性私有以后,外部不能直接调用这些私有属性了,所以需要提供 public的 get/set方法,从而满足外部的调用需要。
    
  • 实例

    // 封装  封装的核心就是属性私有
        public class Student {
    
            // 属性   属性私有
            private  String sno;
            private  String name;
            private  int age;
            boolean  sex;
            private  String addr;
    
            //方法
           public void study(){
               System.out.println("学生学习");
           }
    
           // 因为属性私有以后,外部不能直接调用这些私有属性了,所以需要提供 public的get/set方法,从而满足外部的调用需要。
    
            // 获取学号的值
            public String getSno(){
              return this.sno;
            }
    
            // 设置学号的值
            public void setSno(String sno){
               this.sno=sno;
            }
    
            public String getName() {
                return name;
            }
    
            public void setName(String name) {
                this.name = name;
            }
    
            public int getAge() {
                return age;
            }
    
            public void setAge(int age) {
                if(age>0&&age<=200){
                    this.age=age;
                }else{
                    System.out.println("您的输入有误");
                }
            }
    
            public boolean isSex() {
                return sex;
            }
    
            public void setSex(boolean sex) {
                this.sex = sex;
            }
    
            public String getAddr() {
                return addr;
            }
    
            public void setAddr(String addr) {
                this.addr = addr;
            }
        }
    
    
posted @ 2021-03-29 17:52  失昼  阅读(67)  评论(0)    收藏  举报