JavaSE基础知识学习—封装

封装

Java面向对象的三大特性:封装性,继承性和多态性。
封装字面意思是包装,专业来讲就是给对象提供了隐藏内部特性和行为的能力,对象提供一些能被其他对象访问的方法来改变自身内部的数据。通过私有化类的成员变量,提供公共的getter和setter方法供其他对象调用和访问。其中权限修饰符包括:public,private ,缺省和protected。使用封装的好处在于:
1.通过隐藏对象的属性来保护对象内部的状态。
2.提高代码的可用性和可维护性,因为对象的行为可以被单独的改变和扩展。
3.可以减少耦合
举例说明,请看下面两个类Man类和Woman类
Man类:

private String name;//姓名

private String sex;//性别

private int age;//年龄

private boolean smook;//是否吸烟

private Woman woman;//女人

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getSex() {
    return sex;
}

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

public int getAge() {
    return age;
}

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

public boolean isSmook() {
    return smook;
}

public void setSmook(boolean smook) {
    this.smook = smook;
}


public void setWoman(Woman woman) {
    this.woman = woman;
}

Woman类:

private String name;

private String sex;

private int age;

private boolean beautiful;

private Man man;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getSex() {
    return sex;
}

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


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

public boolean isBeautiful() {
    return beautiful;
}

public void setBeautiful(boolean beautiful) {
    this.beautiful = beautiful;
}

public Man getMan() {
    return man;
}

public void setMan(Man man) {
    this.man = man;
}

对于上面两个类来说,封装就是将类中的属性私有化,提供公共的getter和setter方法供外界其他对象访问,细心的你会注意到,Man类中的woman属性没有getter方法,Woman类中的age没有getter方法,好比外界不能得到男人的女人,也不能得到女人的年龄一样,所以说封装就是将对象的属性私有化,同时提供一些可以被外界其他对象访问的方法,下面将继续说明封装的好处:如果不封装,那么Man类如下:

public String name;

public String sex;

public int age;

public boolean smook;

public Woman woman;

外界对象访问Man类的形式如下:

Man man = new Man();
man.name = "张三";
man.sex = "男";
man.age = 30;

看似没什么问题,如果现在将age的属性改为String呢,如果不使用封装就会在每一处使用Man对象 处修改,如果有几百上千处,那就宣布项目夭折吧,如果使用了封装,那么不需要改其他对象调用的对象属性的方法,只要改对象内部方法的实现过程。

public int getAge() {
    int newAge = Integer.parseInt(this.age);
    return newAge;
}

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

当然还有很多实例,例如性别,为了数据库的优化设计,数据库保存的是0和1,在age的getter方法中写具体的性别判定过程。封装的好处我也只能说到这里了,我也会不断的学习,
我才疏学浅,需要不断的学习,如果有什么不正确的地方,望指正,帮助我进步。我不甚感激!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值