今天来来说说面向对象的核心三大特性,封装,继承,多态.。以类为载体,将对象的属性和行为 封装起来的载体就是类.
类提供了保护机制。提供了数据的安全.封装是面向的核心思想.
下面我们通过实际一个简单的实例来说说类的封装.
下面还是来看看代码吧.我们来模拟餐馆点菜的场景来说说类的封装.
package oop2;
public class extendsTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String cookName="jack chen";
System.out.println("*******请让厨师为我做一份香辣肉丝******");
System.out.println(cookName+"切辣椒");
System.out.println(cookName+"洗蔬菜");
System.out.println(cookName+"烹饪香辣肉丝 ");
System.out.println("*******请问厨师你叫什么名字*******");
System.out.println(cookName);
System.out.println("*******请让厨师在给我切一点辣椒******");
System.out.println(cookName+"切辣椒");
}
上面的代码就是餐馆点菜的场景,上面的代码非常的不安全,任何人都可以从修改其代码。从客观的角度来将,厨师的行为应该是不会受到我们顾客的控制.在这里,我模拟可以将厨师作为一个类进行封装,代码如下.
package oop2;
public class Cooker {
String name;
public Cooker() {
// TODO Auto-generated constructor stub
name="jack chen";
}
void cutppper() {
System.out.println(name+"切辣椒");
}
void washvetetables() {
System.out.println(name+"洗蔬菜");
}
void cooking(String dish) {
cutppper();
washvetetables();
System.out.println(name+"开始烹饪"+dish);
}
}
上面的 代码,就是对厨师的 类进行的一个封装.将厨师类作为一个整体,进行封装,我们能在来看看,顾客和厨师的交互的代码.
package oop2;
public class extendsTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个厨师类的对象.
Cooker jack=new Cooker();
System.out.println("*******请让厨师为我做一份香辣肉丝******");
jack.cooking("香辣肉丝");
System.out.println("*******请问厨师你叫什么名字*******");
System.out.println(jack.name);
System.out.println("*******请让厨师在给我切一点辣椒******");
jack.cutppper();
}
}
看看,我们的场景并没有该改变,但是我们的需求也没有改变.但是这次,我们对厨师类进行了一次的封装.将厨师的属性和行为进行了封装以类为载体进行了封装.只是提供了外部的接口供顾客使用。这样顾客是看不到类里面的东西的,从而大大的 保证了数据的安全性。
当然,我么可以这样的理解,厨师的类的接口本不该提供给顾客,而是我们的服务员。这样,我们就可以进行了2次的封装。
2次封装的原理和上面是一样的,大家可以尝试的看看,这里,我就不再多说了。