java面向对象三大特征之封装

封装就是将一个对象私有化,提供对外的访问接口,完成相应的操作。
举个例子:现在有一个房子,装修完成后里面有各种的家电、家具,这个房子就相当于一个对象,如果不将其封装,那房子里面的
东西任何人都能看见,在java中就是类中的任何对象都能被访问到,那这样也太不安全了吧?由此,引出了封装的概念,我们将其
内部的属性私有化(private),这样这个房子就相当于一个很密闭的空间,里面的所有东西都看不见,但是这样是不是相当于没
有了窗户呢?由此,我们需要给它一扇窗户,也就是在类中设置getter/setter方法,用于访问我们想让其他人看见的属性变量,
这样,这个房子才是安全的,当然,也可以设置一些方法,比如开门,开灯啊,对比在类中就是一些成员方法,使这个房子可以居住。
最终一个可以居住、安全的房子完成了,即一个封装就完成了。

下面就介绍下封装:
1.怎么封装?
(1)属性私有(private),保证数据安全
(2)提供相应的构造器(即构造方法,作用是为了给属性赋值,在初始化时起作用)
(3)提供相应的设定器和访问器(即getter和setter方法,根据实际需要,将一些属性暴露出来可以修改访问)
(4)功能方法(需要根据功能需要编写相应的方法)
2.封装有什么好处?
(1)提高代码的重用性,从而提高项目的开发效率。
举个例子:对我们人都有身高,体重,年龄这些属性,然后就可以将其封装成一个Person类,男人和女人都有着三个属性,然后还
有自己独特的属性,比如男人有妻子,女人有丈夫等,现在我们需要写一个Man和Woman类,不需要再各类中都重新写年龄、身高、
体重这些属性,只需要继承Person类即可(继承也是java面向对象三大特征之一,另一篇文章会详细讲解),这样就会提高代码的
重用性,同时如果在开发过程中,发现在人类还有一个属性性别也是人类共同的属性,只需要在Person类中进行修改即可,不需要
修改继承Person的子类,提高了开发效率。
(2)保证了数据安全
这个在文章开始的例子中介绍了,我们首先将所有的属性私有化,然后根据需要,提供相应的接口,比如一个人的年龄,身高,初始化后
都是不变的,不应该被修改,但是可能需要被访问到,那么只设置访问器(getter方法)即可,不需要设置setter方法。
另外,如果我们在项目中要求输入年龄age,如果将属性公有化(public),可以直接访问到然后设置,那么有可能会被误设置为-1,
public class TestPackage {

    public static void main(String[] args) {
        Person p1 = new Person();  //创建一个Person类的对象p1
        p1.age=-1;  //将p1的属性age赋值为-1
    }

}

class Person{  //Person类
    int age;   //年龄
}

这种不符合实际情况的值,如上述代码,赋值过程很难被发现错误,如果属性私有化,设置setter方法赋值,就可以避免这种情况,如下:

 public class TestPackage {
    public static void main(String[] args) {
        Person p1 = new Person();  //创建一个Person类的对象p1
        p1.setAge(-1);
    }

}

class Person{  //Person类
    private int age;   //年龄

    public void setAge(int age) {//设置年龄
        if (age<0||age>200){   //首先判断年龄是否在正常范围内
            System.out.println("输入年龄有误!");
        }else{
            this.age = age;

        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值