封装

封装定义

将类的某些信息隐藏在类内部,不允许外部程序直接访问,
通过该类提供的方法来实现对隐藏信息的操作和访问。
简单来说就是隐藏对象的信息,同时留出访问的接口。

封装特点

1.只能通过规定的方法访问数据
2.隐藏类的实例细节,方便修改和实现

如何理解封装?

举个生活中的例子,比如ATM机内部存储了很多钞票,但是用户是无法随意直接查看和获取的,这就是ATM机对钞票这个重要信息的隐藏,但同时ATM机也提供了相关的操作接口,用户只需要通过简单的操作就可以获取到机器里存储的钞票。
对于用户而言,其实是不关心机器里面到底在什么位置,以什么形式存放这些钞票的。只要能通过银行卡对钞票进行正确的存取就好了。
这样通过ATM机既保证了重要信息钞票的安全性,同时又通过了一系列的对外接口实现了用户的便捷操作。而且对于用户而言,无论ATM机的内部构造发生了怎样的变化,只要对外的操作口不发生改变,就可以照常进行存取钱操作。

总结

封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想,用户只能通过对外提供的接口访问数据

封装的实现

封装步骤
  1. 修改属性的可见性,设为private
  2. 创建getter/setter方法,设为public,用于属性的读写
  3. 在getter/setter方法中加入属性控制语句
注意事项
  1. 只有getter方法的属性是只读属性,只有setter方法的属性是只写属性
  2. boolean类型的getter方法是is开头的,如isFlag();
  3. 如果在setter方法中有对属性进行限定,那么在带该参数的构造方法里也最好调用setter方法进行属性赋值
  4. 批量生成getter和setter方法,在eclipse中快捷键为alt+shift+s,选择Generate Getters and Setters
封装代码实现
package com.silly.animal;

/**
 * 宠物猫类
 */
public class Cat {
    // 成员属性:昵称、年龄、体重、品种
    // 1.修改属性的可见性---private 限定只能在当前类内访问
    private String name;// 昵称
    private int month;// 年龄
    private double weight;// 体重
    private String species;// 品种
    private boolean sex; //性别 
    //构造方法
    public Cat() {
    }

    public Cat(int month, String name) {
        this.name = name;
        // this.month=month;
        //如果有对属性进行判断,最好调用setter方法
        this.setMonth(month);
    }
    
    // 2.创建get/set方法
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return "我是一只名叫:" + this.name + "的宠物猫";
    }

    public int getMonth() {
        return month;
    }

    public void setMonth(int month) {
        // 3.在get/set方法中添加对属性的限定
        if (month <= 0)
            System.out.println("输入信息错误,宠物猫的年龄必须大于0");
        else
            this.month = month;
    }

    public double getWeight() {
        return weight;
    }

    public void setWeight(double weight) {
        this.weight = weight;
    }

    public String getSpecies() {
        return species;
    }

    public void setSpecies(String species) {
        this.species = species;
    }
    //特别注意boolean类型的getter方法
    public boolean isSex() {
        return sex;
    }

    public void setSex(boolean sex) {
        this.sex = sex;
    }
}

对封装类进行访问

public class CatTest {
    public static void main(String[] args) {
        Cat one = new Cat();
        //设置属性
        one.setName("花花");
        one.setMonth(-3);//打印输入信息错误
        //访问属性
        System.out.println("昵称:" + one.getName()); //我是一只名叫:花花的宠物猫
        System.out.println("昵称:" + one.getMonth()); //0

    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355