JAVA编程思想(第四版)个人总结--第一章对象入门(part1)

xiaoxiao2021-02-28  6

1.1  抽象的进步

        面向对象的程序设计:允许我们定义一个类来抽象描述实际问题(用问题描述问题)。

        面向对象的程序设计基本特征:1.“万物皆对象”,可以将对象看做一种特殊的变量,它不仅可以保存数据(属性),还可以对自身做一些改变(方法)。2.程序是很多对象的组合,通过对象的互相调用来实现功能。3.对象都有对应的对象空间,可以容纳其它对象;所以理论上,通过对象的堆叠,可以形成任意复杂的功能。4.每一种对象都有一种独有的数据类型。5.某种类和它统筹的衍生类对象,某种程度上可以等同处理和调用方法。

1.2  对象的接口

       我们向对象发出的请求是通过它的“接口”(Interface)定义的,对象的“类型”或“类”则规定了它的接口形式。“类型”与“接口”的等价或对应关系是面向对象程序设计的基础。

1.3  实现方法的隐藏(隐藏的实现)

       现在我们将涉及面向对象编程的人群进行区分:类创建者(顾名思义,创建类的人)和客户程序员(调用现成的类,以实现某种功能或解决问题的人)。所谓“隐藏的实现”,即是指类创建者创建类后,没必要向客户程序员开放类中的所有内容,只需要提供特定的接口给到客户程序员来调用就可以;在这个过程中,类中的大部分内容被隐藏,只有特定接口可以被访问用来实现功能。

        知识点:接口(Interface)--规定了可对一个特定的对象发出哪些请求。(书上定义)

        控制对成员(成员变量和成员方法)的访问具体原因:1.客户程序员通过接口即可实现目标功能,没必要知道类中的全部细节。这也是为了防止程序受到非法修改。2.方便对类内部结构的优化和升级,客户程序员只需从新链接这个类即可。

        Java采用了三个显性关键字和一个隐性关键字来界定访问的权限:public,private,protected,friendly(隐性)。“public”(公开的)意味着所有的请求都可以访问到public后续的定义内容;“private”(私有的)则相反,只有类中的成员可以访问到private后续的定义,类外的访问会得到编译器错误;“protected”(受保护的,类似private,但不完全相同)只有一个继承的类可以访问,但不能访问private修饰的定义内容;“friendly”(友好的)涉及“封装”的概念,只能在包装的范围内使用(待补充)。

1.4  方案的重复利用(待补充)

        创建成员对象:为重复使用一个类1,我们在另一个类2中创建一个类1的对象。

        在这样一个类2中,我们可以创建任意数量和任意类型的对象,这种概念叫做“组织”。对象的组织具有很大的灵活性。

1.5  继承:重新使用接口

        设计继承的目的,根据已有的类(基础类/超类/父类),进行扩展新的功能。这样形成的新类(继承类/子类)不但和原类

有着相同的类型(Type/class),还有着原类的功能和子类的衍生功能。

        Java中的继承是通过extends关键字来实现的。

        衍生类的数据类型和基础类的并不能说是完全等价的。因为我们无法将新类型完美地替换成原类类型,替换后也无法在基础类中访问衍生类的新功能。

1.6  多形对象的互换使用(待补充)

        上溯造型(Upcasting):将子类对象看待为父类对象,以调用父类方法。

举例,我们定义一个父类Shape(形状),成员方法(填充图形)。然后父类有衍生类Circle(圆形),Rectangle(矩形),Triangle(三角形)等。如果我们在组织里定义一个圆形Circle对象,并调用父类Shape的成员方法(填充图形)。此时我们就是将Circle的数据类型等同于父类的类型Shape去完成方法的调用。

        动态绑定:当我们用子类对象去调用父类方法时,不用重新申明特定的衍生类数据类型Circle,系统就能根据Shape的类型正确地完成功能。这是因为编译器和运行器完成了对特定数据类型的细节补充,无需我们主动申明。将一条消息发给对象时,如果并不知道对方的具体类型是什么,但采取的行动同样是正确的,这种情况就叫作“多形性”(Polymorphism)。对面向对象的程序设计语言来说,它们用以实现多形性的方法叫作“动态绑定”。(书上定义)

        抽象的基础类:有时候,我们不希望基础类被直接访问,最好只有一个接口(通过衍生类的上溯造型访问)。这时候,可以使用abstract关键字来修饰,变成一个抽象类。编译器会阻止使用者直接创建的抽象类对象。

转载请注明原文地址: https://www.6miu.com/read-2050048.html

最新回复(0)