为什么要应用封装
在定义类的时候,如果能够间接批改类中的字段那么就可能会呈现以下的状况,age能够设置成1000,score能够设置为10000
#### 封装要解决的问题:
- 封装能够暗藏实现的细节
- 让使用者只能通过实现写好的拜访办法来拜访这些字段,这样一来咱们只须要在这些办法中减少逻辑管制,限度对数据的不合理拜访、
- 不便数据查看,有利于于爱护对象信息的完整性
- 便于批改,进步代码的可维护性
为了实现良好的封装,须要从两个方面思考
- 把字段(成员变量)和实现细节暗藏起来,不容许内部间接拜访
把办法裸露进去,让办法管制这些成员变量进行平安的拜访和操作
因而,封装就有两个含意:把该暗藏的暗藏起来,把该裸露的裸露进去
如何应用封装
package com.msbline.oop.test;public class Dog { private String name; private int age; private String color; public Dog() { } public Dog(String name, int age, String color) { this.name = name; this.age = age; this.color = color; } public void eat(){ System.out.println("eating bones"); } public void play(){ System.out.println("play......"); } public void show(){ System.out.println("name:"+this.name); System.out.println("age:"+this.age); System.out.println("color:"+this.color); } public void setAge(int age) { if (age <= 20){ this.age = age; } else { System.out.println("年龄不非法"); } } public void setName(String name) { this.name = name; } public void setColor(String color) { this.color = color; } public String getName() { return name; } public int getAge() { return age; } public String getColor() { return color; }}
package com.msbline.oop.test;public class Test { public static void main(String[] args) { Dog dog = new Dog(); dog.setName("大黄");// dog.age=20; dog.setAge(21); dog.setColor("yellow"); dog.show(); }}
狭义的封装
能够将实现特定性能的代码块封装成一个办法,供不同的程序调用,比方咱们我的项目当中的工具类