今天对java中信息的封装与隐藏做了一定的预习,通过在网上看视频有了初步的了解,但是也没怎么听明白,,之所以要对属性的封装和隐藏是因为如果直接访问属性的话会对其安全性有影响,比如在下面代码中:
1 public class Student(){
2 public String name;
3
4 public void getName(){
5 system.out.println(name);
6 }
7 }
public class Test(){
Student stu = new Student();
stu.name = "张三";
stu.getName();
}
如果作为一个使用者,我们要调用Student类中getName中的方法时,在Test类中,我们可以随意修改stu.name的名字,这样就造成了不安全性,其实我也没搞太明白。。。。
,为了增强其安全性,我们可以将public修饰符改为private修饰符,再提供公开的方法是调用者实现对该属性的操作,根据视频是老师的步骤,学会了对属性建set/get方法,在eclipse上方点击source选项,然后选择Generate Getters and setters,选择要private的属性,实现以下界面
1 package com.practice.shihan;
2
3 public class Student {
4 private String name;
5 private int age;
6 private String major;
7
8 public String getName() {
9 return name;
10 }
11
12 public void setName(String name) {
13 this.name = name;
14 }
15
16 public int getAge() {
17 return age;
18 }
19
20 public void setAge(int age) {
21 this.age = age;
22 }
23
24 public String getMajor() {
25 return major;
26 }
27
28 public void setMajor(String major) {
29 this.major = major;
30 }
31 }
这样就对以上代码中age、name、major属性实现了私有,调用者只能通过调用set/get方法来实现对属性的操作,其实我也不是太明白为何要对信息封装和隐藏,感觉这样调用者也能实现对属性的更改,感觉是多此一举,希望有哪位前辈能解答以下,谢谢。