面向对象特征之一:封装与隐藏

本文介绍面向对象编程中的封装特性,包括其定义、作用以及如何在Java中实现。通过实例展示了私有属性与公共方法的使用,说明了如何保护类内部状态。

面向对象特征之一:封装与隐藏

1.作用和含义

  • 不需要知道API具体的内部实现,只需要知道怎么用就行
  • 高内聚(内部操作由自己完成,不允许外部干涉)、低耦合(对外暴露少量的方法用于使用)
  • 隐藏对象内部的复杂性,只对外公开简单的接口

2. 封装性的体现

  • 将类的属性xxx私有化(private),同时,提供公共(public)方法来获取(getXxx)和设置(setXxx)类的私有属性
  • 不对外暴露的私有方法
  • 单例模式

3.封装的体现,需要权限修饰符来配合

  • java规定的4种权限(从小到大排列):private,缺省,protect,public

  • 4种权限可以用来修饰类及类的内部结果:属性、方法、构造器、内部类
    在这里插入图片描述

2.code举例


public class AnimalTest {
    public static void main(String[] args) {
        // 赋值操作要受到属性的数据类型和存储范围的制约
        Animal a = new Animal();
        a.name = "大橘";
        // 通过类中的方法对私有属性进行赋值
        a.setLegs(-6);
        a.age = 18;
        a.show();
        // 获取类中私有属性的值
        System.out.println("类中私有属性的值为:" + a.getLegs());

    }
}


class Animal {
    String name;
    int age;
    // 外部无法直接访问属性,必须通过方法来给legs 设置值,避免外部直接通过对象.属性进行赋值
    private int legs;

    // 通过方法来设置 legs 的值,对legs进行封装,体现封装性
    public void setLegs(int l) {
        if(l >= 0 && l%2 == 0){
            legs = l;
        }else {
            legs = 0;
        }
    }

    // 通过方法来获取 legs 的值
    public int getLegs() {
        return legs;
    }


    public void eat() {
        System.out.println("动物进食");
    }

    public void show() {
        System.out.println("name =" + name + ",age = " + age + ",legs = " + legs);
    }
}

“name =” + name + ",age = " + age + ",legs = " + legs);
}
}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值