A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yapo 中级黑马   /  2015-5-5 12:56  /  757 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

课堂上,老师说理解封装的思路为:①把同一类型的对象的共有属性和行为定义在一个类里,这就叫做封装。接着又有一句:②封装就是隐藏对象的属性和具体实现细节,仅提供对外访问方式。


问题来了①和②两句话反应的好像不是同一个意思
毕老师举例说“cpu,电风扇,硬盘.....都封装在机箱内,我们用时通过开关和接口就可以使用,电脑主机箱就可以看做是一个封装体”。函数,循环语句也是一个封装的体现,直观理解起来不就是说:只要把功能和属性放到同一个容器,对外提供公共访问方式不就是封装吗?为什么说要“同一类型的对象的共有属性和行为”呢?不是同一类型的对象的非共有属性不也可以封装吗?该怎么理解呢?

3 个回复

倒序浏览
不是同一类型的对象的非共有属性不也可以封装吗? 封装 有前提~~~
比如:汽车 类 ,具备汽车的一切属性和功能,可以生产不同的汽车 。飞机类,具备飞机的一切属性和功能,可以生产不同的飞机。如果要将汽车和飞机他们两者再封闭的话,那么就需要定义汽车飞机类,等于是说汽车飞机类包含了汽车类和飞机类一切属性和功能。
回复 使用道具 举报
CoeusLYJ 发表于 2015-5-5 13:06
不是同一类型的对象的非共有属性不也可以封装吗? 封装 有前提~~~
比如:汽车 类 ,具备汽车的一切属性和功 ...

原话是“同一类型的对象的共有属性和行为定义在同一类里”,飞机,汽车对应的是“同一类型的对象吗”,好像不太说得通啊
回复 使用道具 举报
飞机、汽车不同一类对象,原本只能单独封装。你问题中提到“不是同一类型的对象的非共有属性不也可以封装吗?”,其实就像我举的例子一样,是不能封装 ,如果非要封装就需要更大的类去封装它,比如飞机汽车类。而在JAVA中,所有类的顶层是Object类。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马