• Java从零开始学十三(封装)


    一、什么是封装,为什么要封装

    对面向对象而言:封装就是将方法和属性包装到一个程序单元中,并且这个单元以类的形式实现。

    简单讲:封闭就是将属性私有化,提供公有方法来访问私有属性

    封装的作用:

    • 封装反映和事物的相对独立性,封装在编程中的作用就是:使对象以外的部分不能随意更改对象的属性,从而有效避免了外部错误操作对此对象的影响
    • 提高松耦合性,代码重用性

    松耦合:把对象想象成一个电池,这个电池不仅可以在相机中使用,也可以在遥控器,吹风机和剃须发等中使用, 我们说电池的松耦合性是非常好,而实现如此好的松耦合的前提就是对象有很好的封装性

    二、封装的实现

    1. 属性私有化private
    2. 设置get/set方法
    3. 对属性设置必要的限制
    package com.pb.demo3;
    
    public class Person {
        private String name; //姓名
        private String sex;    //性别
        private int age;//年龄
    
        //设置getter和setter方法
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            if(sex.equals("男") || sex.equals("女")){
                //设置性别限制,不合法的值将提示错误
            this.sex = sex;
            }else{
                System.out.println("性别不合法,性别只能是:男或者女");
            }
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            if(age>0 && age<=150){
                //设置年龄限制
            this.age = age;
            }else{
                System.out.println("年龄只能在1-150岁之间");
            }
        }
        public Person() {
        
        }
        public Person(String name, String sex, int age) {
            this.name = name;
            this.sex = sex;
            this.age = age;
        }
        
        public void say(){
            System.out.println("自我介绍:");
            System.out.println("姓名:"+this.name);
            System.out.println("性别:"+this.sex);
            System.out.println("年龄:"+this.age);
        }
    
    }

    测试类:

    package com.pb.demo3;
    
    public class PersonTest {
    
        public static void main(String[] args) {
            Person person=new Person();
            person.setName("韩冰");
            //传入不合法的值
            person.setSex("中性");
            //传入不合法的值
            person.setAge(200);
            //调用普通方法输出
            person.say();
    
        }
    
    }

    结果:将提示错误

    性别不合法,性别只能是:男或者女
    年龄只能在1-150岁之间
    自我介绍:
    姓名:韩冰
    性别:null
    年龄:0

    从结果可以看出,不合法的值,将为该数据类型的初始值String 为null,int 为0

    也可以在构造方法中为值进行初始化,这样,设置值为不合法时,就会使用初始化的值

    public Person() {
            this.name = "无名氏";
            this.sex = "男";
            this.age = 22;
        }

    再执行错误的值传入时

    package com.pb.demo3;
    
    public class PersonTest {
    
        public static void main(String[] args) {
            Person person=new Person();
            person.setName("韩冰");
            //传入不合法的值
            person.setSex("中性");
            //传入不合法的值
            person.setAge(200);
            //调用普通方法输出
            person.say();
    
        }
    
    }

    结果:

    性别不合法,性别只能是:男或者女
    年龄只能在1-150岁之间
    自我介绍:
    姓名:韩冰
    性别:男
    年龄:22

  • 相关阅读:
    秀秀我的PENTAX的手动标头
    软件测试工具
    071226 冷
    071228晴转雨
    长假计划
    Merry Christmas
    信宿事件
    並べ替えーーバブルソート等
    收藏
    实践浪漫
  • 原文地址:https://www.cnblogs.com/liunanjava/p/4295154.html
Copyright © 2020-2023  润新知