标签:str 编译 amp 一个 特性 创建 如何 隐藏 成员
封装:为了解决程序数据的安全性
继承:为了解决程序代码的重复性
多态:为了解决程序代码的扩展性
封装:将类中某些成员隐藏起来,对外暴露一个公共的访问方式
通过下面 一个例子来说明下为什么要使用封装
public class Dog { int age; String name; public void bark(){ System.out.println("狗嗷嗷叫...."); } } public class TestDog { public static void main(String[] args) { //1.创建一个狗对象 Dog d1 = new Dog(); System.out.println(d1.name); // null System.out.println(d1.age); // 0 //2.修改成员变量的值 d1.name = "旺财"; d1.age = -18;//非法数据 System.out.println(d1.name); // 旺财 System.out.println(d1.age); // 18 } }
如果我们给 age 赋值非法数据,也能通过编译,也能运行,但是数据很明显不符合实际,我们可以使用封装,解决这种数据安全问题
原则:合理隐藏,合理暴露
步骤:
private 可以用来修饰类的成员变量/成员方法
作用:
如果成员变量被private修饰了,那么该成员变量只能类的内部访问,外部无法访问
接着:
我们还需要暴露一种访问该成员变量的方式,称为获取器和设置器(getter And setter)
public class Dog { //private的作用 私有化成员变量 private int age; private String name; public void bark(){ System.out.println("狗嗷嗷叫...."); } //为name提供get/set方法 public String getName(){ return name; } public void setName(String n){ name = n; } //我们要为age提供get/set方法 //get方法 public int getAge() { return age; } //set方法 public void setAge(int a){ //对数据的合法性进行判断 if (a>0 && a<20){ age = a; }else{ age = 10;//如果a的值不符合正常范围,我们认为是10 } } } public class TestDog { public static void main(String[] args) { //1.创建一个狗对象 Dog d1 = new Dog(); // System.out.println(d1.name); // null System.out.println(d1.getName()); // null // System.out.println(d1.age); // 0 System.out.println(d1.getAge()); // 0 //2.修改成员变量的值 // d1.name = "旺财"; d1.setName("旺财"); // d1.age = -18;//非法数据 d1.setAge(-1800); System.out.println(d1.getName()); // 旺财 System.out.println(d1.getAge()); // 18 } }
标签:str 编译 amp 一个 特性 创建 如何 隐藏 成员
原文地址:https://www.cnblogs.com/boyw/p/12952298.html