Java面向对象编程(19)封装的实现❤
这一节我们来讲封装的实现。
一、封装操作步骤:
- 将属性的修饰符设为私有(private)。
- 按Shift+Alt+S,选择Generate Getters And Setters(生成get和set方法),勾选我们需要封装的属性,生成get和set方法。
- 在需要的地方调用set方法设值,调用get方法取值即可。
示例代码如下:
我们创建一个会员类(包含电话号,密码,注册名,余额四个属性),创建一个会员Bob并在主类中获取Bob的电话号。
Member类:
public class Member {
//声明Member的属性
public String phone;
public String password;
public int regName;
private double amount;
}
然后是我们的主类:
public class Test01 {
public static void main(String[] args) {
// 投资人也是会员
Member Bob = new Member();//新建一个会员Bob
Bob.phone="18755555555";//设置Bob的手机号
System.out.println("Bob的电话号是:"+Bob.phone);
}
}
此时我们想要把phone 属性保护起来,防止从外部使用点语法(即Bob. phone)来修改phone的值。我们想到使用封装:
修改Member类:在Member类中,按Shift+Alt+S快捷键,选择Generate Getters And Setters,并勾选phone,点击Generate生成get和set方法:
public class Member {
private String phone;
public String password;
public int regName;
private double amount;
public void setPhone(String phone) {
this.phone=phone;
}
//使用get返回数据,防止使用点语法修改phone值
public String getPhone() {
return phone;
}
}
同时我们将phone的修饰符改为private,这样我们就完成了phone属性的封装。我们可以通过set和get方法来操作phone属性。此时Test01类中会报错,phone属性无法访问。
主类对应修改为:
public class Test01 {
public static void main(String[] args) {
// 投资人也是会员
Member Bob=new Member();
Bob.setPhone("18555555555");
System.out.println(Bob.getPhone());
}
}
这样我们就可以通过setPhone方法来修改phone属性的值,通过getPhone方法获取phone属性的值,而防止了在外部使用点语法对phone属性的值进行修改。
软件测试工程师一只,也在不断的学习阶段,平时的小经验不定期分享。
博主经验有限,若有不足,欢迎交流,共同改进~
有意可加Q群 908417285 交流学习。
乾坤未定,你我皆是黑马
还没有评论,来说两句吧...