编程语言
首页 > 编程语言> > 浅析Java的封装思想

浅析Java的封装思想

作者:互联网

我们都知道Java是面向对象的编程语言,面向对象的编程有3大基本特征:封装、继承和多态。本期就来聊聊类的封装。

著名作家钱钟书说过,“假如你吃了个鸡蛋觉得不错,何必要认识那个下蛋的母鸡呢?”


这就是封装的思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体就是类,类通常对客户隐藏实现细节。

--------------封装的优点:

*良好的封装能够减少耦合
*类内部的结构可以自由修改
*可以对成员变量进行更精确的控制
*隐藏信息,实现细节

其实,我刚开始比较疑惑的是,大多数网上看到的资料和我在书上看到的不太一样!那大家也和我一起看下吧

首先网上的资料大多数都是get()set()方法来封装类的属性,步骤如下:

1.修改属性的可见性来限制对属性的访问(一般限制为private)
2.为每个属性创建一对赋值和取值方法(常见为get、set),用于对这些属性的访问
3.在赋值和取值方法中,加入对属性的存取限制。
下面截图给出菜鸟教程上的例子

 

 

 

说白了,这只是一个对类的属性进行了封装,接下来,我们聊聊我在书上看到的例子,如下:

package demo;
public class Restaurant {

private Cook cook = new Cook();

public void takeorder(String dish) {
cook.cooking(dish);
System.out.println("您的菜好了,请慢用");
}

public String saySorry() {
return "抱歉,餐厅不提供此项服务。";

}

public static void main(String[] args) {
Restaurant waiter = new Restaurant();

System.out.println("**请让厨师为我做一份香辣肉丝。**");

waiter.takeorder("香辣肉丝");
System.out.println("**你们的厨师叫什么名字?***");
System.out.println(waiter.saySorry());
System.out.println("**请让厨师给我切一点葱花**");
System.out.println(waiter.saySorry());

}

class Cook{
private String name;
public Cook() { this.name = "Tom Cruise"; }
private void cutOnion() {
System.out.println(name + "切葱花");
}
private void washVegetavles() {

System.out.println(name + "洗蔬菜");
}
void cooking(String dish) {

washVegetavles();
cutOnion();
System.out.println(name + "开始烹饪" + dish);
}

}


}

运行结果如下:

上面的这个例子,之前就看过,但并没有get到精髓,其实这里面有很多封装。

首先这段程序涉及到服务员,顾客和厨师,顾客点了一份香辣肉丝,下单的是服务员,上菜的也是服务员,厨师(class Cook)被封装在餐馆中,顾客无法正面接触厨师。Cook类其实属于Restaurant类的内部类,而在Resturant类中封装的Cook类的内部是什么样子的?不仅厨师名字用Private修饰(也就是属性的封装),而且cutOnion和washVegetavles 两个方法也被private修饰(方法的封装),当然后面有Cooking方法相当于把这两个封装的方法调用出来了。

然后我们再来看下怎样跑的,首先在主方法处,顾客要香辣肉丝,然后,对象服务员调用takeOrder方法,接着takeOrder方法里是调用了封装了的厨师类的cooking方法,接着cooking方法里面调用了封装的厨师name属性和cutOnion和washVegetavles方法,最后这段香辣肉丝的代码跑完。从中,我们看到了这种“一环套一环”式的封装,我们也看到了Java的这种封装思想的优雅、面向对象的对象思维,不经意间为我们提供了一种新的思考方式和快乐。

 

 

 

 

 

 

 

标签:封装,System,Cook,println,Java,属性,浅析,out
来源: https://www.cnblogs.com/yusuf/p/12819022.html