Java面向对象-封装

26 篇文章 0 订阅
12 篇文章 0 订阅

目录

一、封装

1.1.为什么要使用封装?

1.2.封装的初次尝试

1.2.1.思路

1.2.2.private修饰符

1.2.3.private的使用

1.3.封装的概念

1.4.封装的优点

1.5.JavaBean规范


一、封装

1.1.为什么要使用封装?

        我们创建一个表示Person的JavaBean模板类|实体类

class Person{
	//字段
	public String name;
	public int age;	
	//空构造
	public Person() {
			
	}
}

        我们单纯的看这个Person类,可能没有什么问题?
        但是实际上,我们创建一个Person类的实例,之后,我们给这个对象的age属性赋值-15或是200,编译运行的时候也是不报错的。
        也就是说,这样的在代码中是合适的,但是代码是要反应现实的,放在现实世界中是不合理的。这是代码逻辑和显示逻辑的不吻合。
        不仅如此,我们在修改对象的属性值的时候,也只需要通过对象名.属性名就可以进行修改了,这看起来没什么,很容易就修改了。但是如果这个属性是你银行卡里的余额呢?是不是突然觉得自己的小钱包已经不安全了。
        我们接下来就尝试解决一下这个问题吧。

1.2.封装的初次尝试

1.2.1.思路

        我们首先解决属性修改过于容易的问题。
        仔细回想一下,我们经常修改属性的值是不是在main方法中,也就是说,在方法中,我们可以对属性的值进行修改。
        如果,我们把对属性的值的修改放到方法中,让使用这个Person类的用户都通过方法进行修改,而不是通过对象名.的方式进行修改。
        这个方法一定是pubilc修饰的,只有pubilc修饰的方法才可以让用户使用。

    public void setAge(int age){
        this.age = age;
    }

        此时,我们发现,采用方法来修改属性的同时,我们还可以再方法中对用户输入的值进行判断,当用户输入的值不满足条件的时候,赋值失败。
        这样,就同时也解决了Person类中的age可以为负数的问题。

        但是,我们虽然设置了方法来修改属性值,但是实际上,还是可以通过对象名.的方式来修改,这是因为我们的属性值是使用pubilc修饰的,对外界来说,是可见的。
        我们可以通过private修饰符来解决这个问题。

1.2.2.private修饰符

        私有的,只能在类中访问
        成员修饰符,只能修饰成员,不能修饰局部

        对于私有的属性而言,需要配合一对公共的访问方式来使用
        设置器        setter:成员方法,为私有成员设置属性值
        访问器        getter:成员方法,获取私有属性的值

1.2.3.private的使用

        第一步,我们需要把Person类成员变量中使用pubilc修饰的实例变量都修改为private修饰符。这回让外界不能再通过对象名.的方式修改属性值。

class Person{
    private String name;
    private int age;
}

         第二步,我们需要添加对外的方法,放外界通过我们指定的方法来修改值以及获取我们对象中的值。

class Person{
    private String name;
    private int age;

    //构造器
    public Person(){}

    //设置器
    public void setAge(int age){
        if(age<=0 || age>150){
            return;
        }
        this.age = age;
    }

    //访问器
    public int getAge(){
        return this.age;
    }
}

1.3.封装的概念

        隐藏内部的实现细节,对外提供公用的访问方式

1.4.封装的优点

        1.提高安全性
        2.提高代码复用性

1.5.JavaBean规范

        JavaBean表示一系列的实体类|模板类

规范:

        1.类是公共的
        2.至少提供一个空构造
        3.属性私有化
        4.提供一对公共访问方式
        5.重写toString、equals方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值