面向对象三大特征之一封装性

一、面向对象的三大特征
封装 (Encapsulation)
继承 (Inheritance)
多态 (Polymorphism)

二、封装

1、什么是封装
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
2、封装的分类与好处
狭义的封装:属性的封装与方法的封装
广义的封装:包的管理、组件、框架、应用程序...
好处:
    将变化隔离
    便于使用
    提高重用性
    提高安全性

三、封装与隐藏
例如:使用者对类内部定义的属性的直接操作会导致数据的错误、混乱或安全性问题。

public class TestEncapsulation {

    public static void main(String[] args) {
        Account a = new Account();

        /*a.balance = 1200;//随意更改不安全
        a.balance = -1200;*/

        boolean result = a.save(1200);
        System.out.println("存钱:"+result+",现在账户余额:"+a.getBalance());

        result = a.save(-1200);
        System.out.println("存钱:"+result+",现在账户余额:"+a.getBalance());

        result = a.withdraw(100);
        System.out.println("取钱:"+result+",现在账户余额:"+a.getBalance());

        result = a.withdraw(2000);
        System.out.println("取钱:"+result+",现在账户余额:"+a.getBalance());
    }

}
/*class Account{
    double balance;
}*/

class Account{
    private double balance;//封装隐藏

    //提供公共的访问方式
    //1、获得账户余额
    public double getBalance(){
        return balance;
    }

    //2、对余额的修改只能通过save和withdraw两个方法操作
    public boolean save(double money){
        if(money>0){
            balance += money;
            return true;
        }
        return false;
    }

    public boolean withdraw(double money){
        if(money > 0 && money <= balance){
            balance -= money;
            return true;
        }
        return false;
    }
}
Java中通过将数据声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对该属性的操作,以实现下述目的:
    隐藏一个类中不需要对外提供的实现细节;
    属性的封装:使用者只能通过事先定制好的方法来访问数据,可以方便地加入逻辑控制,限制对属性的不合理操作;
    方法的封装:使用者按照既定的方式调用方法,不必关心方法的内部实现,便于使用;
    便于修改,增强代码的可维护性;
/*
 * 创建程序,在其中定义两个类:Person和TestPerson类。定义如下:
    用setAge()设置人的合法年龄(0~130),用getAge()返回人的年龄。
    在TestPerson类中实例化Person类的对象p,调用setAge()和getAge()方法,体会Java的封装性。
 */
public class TestPerson {

    public static void main(String[] args) {
        Person p = new Person();
        p.setAge(22);
        System.out.println(p.getAge());
    }

}
class Person{
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if(age>0 && age<130){
            this.age = age;
        }
    }
}

四、四种权限修饰符
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值