java的封装思想_浅析Java的封装思想

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

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

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

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

*良好的封装能够减少耦合

*类内部的结构可以自由修改

*可以对成员变量进行更精确的控制

*隐藏信息,实现细节

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

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

1.修改属性的可见性来限制对属性的访问(一般限制为private)

2.为每个属性创建一对赋值和取值方法(常见为get、set),用于对这些属性的访问

3.在赋值和取值方法中,加入对属性的存取限制。

下面截图给出菜鸟教程上的例子

63e2cc0b8552823404311d2b0a2e6c83.png

2868e5812fbe46452ecbd0591263e0bf.png

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

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);

}

}

}

运行结果如下:

0b7df9ebcd39977971ed013001819bee.png

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值