阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

面向对象的三大特征-封装

159次阅读
没有评论

共计 2497 个字符,预计需要花费 7 分钟才能阅读完成。

1、封装概述

1.1、什么是封装

成员变量都是隐藏在对象内部的,外界无法直接操作和修改。
封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。

1.2、封装的原则

将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。

1.3、封装步骤

private 修饰成员变量

对需要访问的成员变量,提供对应的一对 get/set 方法

1.4、案例

** 需求:** 编写一个类中得到生日的方法

分析:

① 类的成员变量可以成为只读或者只写的。比如用:访问器 getXxxx(); 或者修改器 setXxxx();

② 类可以对储存在其中的成员变量中的内容有一个整体的控制。可以根据访问修饰符的提点在其它类中调用该类中的属性和行为。

③类的用户不需要知道类是如何储存数据的。

public String getBirthday(){return year + "-" + month + "-" + day; } public void setBirthday(String birthday){// 拆分字符串,分别取出年月日, 给 year、month、day 进行赋值 } 而在外部调用这个方法的时候 this.getBirthday(); this.setBirthday("1990-9-9"); 此时就体现出外部是不知道如何储存 birthday 这个方法的,用户只能调用它。

2、封装实现

2.1、private 修饰属性

修改属性的可见性来限制对属性的访问(一般限制为 private)

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

这段代码中,将 nameage属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。

2.2、公共方法访问

对每个值属性提供对外的公共方法访问,也就是创建一对赋值取值方法,用于对私有属性的访问。

public class Person{private String name; private int age; public int getAge(){return age; } public String getName(){return name; } public void setAge(int age){this.age = age; } public void setName(String name){this.name = name; } }

我们将 name,age 属性私有化,那么除了 Person 这个类以外其他地方都不能使用他,所有这个时候,我们选择了全局的 set,get 方法,来为我们的属性 name,age 来存放值和取值。

采用 this 关键字是为了解决成员变量(private String name)和局部变量(setName(String name)中的 name 变量)之间发生的同名的冲突。

2.3、案例

public class Encap{private String name; private String idNum; private int age; // 声明 set,get 方法初始化与获取 public int getAge(){return age; } public String getName(){return name; } public String getIdNum(){return idNum; } public void setAge(int newAge){age = newAge;} public void setName(String newName){name = newName;} public void setIdNum(String newId){idNum = newId;} }
public class EncapDemo{public static void main(String args[]){Encap encap = new Encap(); // 创建对象,通过对应的 set 方法,初始化 encap.setName("James"); encap.setAge(20); encap.setIdNum("12343ms"); System.out.print("Name :" + encap.getName()+ "Age :"+ encap.getAge()); } }

运行结果:

面向对象的三大特征 - 封装

我们在调用我们的属性 name,age 的时候,使用了,set,get 方法,那么这就是一个典型的封装。

3、javaBean

JavaBean 是 Java 语言编写类的一种标准规范。符合 JavaBean 的类,要求类必须是具体的和公共的,并且具有无参数的构造方法,提供用来操作成员变量的 set 和 get 方法。

3.1、格式

public class ClassName{// 成员变量 // 构造方法 // 无参构造方法【必须】每个类都有一个默认的无参的构造方法 // 有参构造方法【建议】 // 成员方法 //getXxx() //setXxx() }

3.2、案例

需求:编写一个 javaBean 规范的类,以动物类为例。

public class DongWu{private String name; private int age; // 构造方法, 默认可不写 public DongWu(){ } // 有参的构造方法 public DongWu(String name,int age){this.name=name; this.age=age; } // 成员方法 public void setName(String name) {this.name = name; } public String getName() {return name; } public void setAge(int age) {this.age = age; } public int getAge() {return age; } }
public class DongWuDemo {public static void main(String[] args) {// 无参构造使用 DongWu s= new DongWu(); s.setName("猫"); s.setAge(2); System.out.println(s.getName()+"‐‐‐"+s.getAge()); } }

运行结果:

面向对象的三大特征 - 封装

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-06-06发表,共计2497字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中