不是很能想通
封装考虑的是内部实现,抽象考虑的是外部行为
这句话
“封装考虑的是内部实现”,封装就是把一个一个独立的逻辑封装成一个一个的方法或者接口,主要是考虑怎么实现这些方法和接口。
“抽象考虑的是外部行为”,抽象是把共同部分提取出来,变成抽象类,对于每个类来说它们是外部的。
简单来说:封装就是不让你看见怎么实现的,抽象就是你必须也得弄出来个实现。
封装:比如一个类,你把它封装以后,你只要告诉别人传什么参数,用哪个方法就可以得到他想要的结果。具体怎么在类里面实现,你自己决定,
别人是不知道的,只有你自己知道。
抽象: Java说万事万物皆为对象,但是有没有发现你创建一个对象的时候,也就是new 一个对象的时候,形式都是:new 类名();
你创建一个对象为什么要new 一个类名呢? 因为这个类是你所要创建的对象抽象出来的。 怎么抽象的呢?找他们的共同特征,拿出来抽象为类或者
接口。 例如:司机,保安,售货员;虽然职业不同,但他们都有姓名,年龄,性别。你就可以抽象成一个Person类。 你也可以找他们其他共同的特征,
抽象成一个你想得到的类。
*******感觉有点啰嗦*******************
个人理解:
封装的目的是为了调用,比如说,有一段代码需要多次被用到,可以将他们封装成一个函数,封装的时候就需要考虑你要封装的内容,变量,函数;
而你调用的时候,不需要考虑其内部,只需知道,传入的参数和返回的类型。
抽象,故名思议,你要将其具体化,比如抽象函数,抽象函数是没有具体方法的,需要子类来继承它,在继承抽象函数后的子类,必须重写函数,
也就是将抽象函数具体化。这样的还有接口,其实接口里也全是抽象函数。
封装感觉就是,产品知道程序员会写代码,就让程序员去写,而不用知道具体什么鬼,只要能完成他的奇葩需求就好,
而程序员这么严谨的生物,肯定会在功能完成之后再去优化,这个时候产品就不知道了。但是结果是不变的,
抽象
就是盖房子,盖好骨架,让住户去装修,每家不一样,但总有一样的地方,那就是它们都是一栋楼的
封装就是把设计者和使用者区分开,把细节隐藏起来,实现由内部实现,外界无需理会它
抽象是把类的特征集合起来,外部可以访问