java基础入门之对象导论

一、面向对象语言的五个基本特征

1.万物皆为对象。
2.程序是对象的集合,他们通过发送消息来告知彼此所要做的。
3.每个对象都有自己的由其他对象所构成的存储。
4.每个对象都拥有其类型。
5.某个特定类型的所有对象都可以接受同样的消息。

二、每个对象都有一个接口

创建 抽象数据类型(类)是面向对象程序设计的基本概念之一。 抽象数据类型的运行方式有内置类型几乎完全一致:你可以创建某一类型的变量(按照面向对象的说法,称其为对象或实例),然后操作这些变量(称其为发送消息或请求;发送消息,对象就知道要做什么)。

所以,尽管我们在面向对象程序设计中实际上进行的是创建新的数据类型,但事实上所有的面向对象程序设计语言都使用class这个关键词来表示数据类型。当看到类型一词时,可将其作为类来考虑,反之亦然。

因为类描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以一个类实际上就是一个数据类型,例如所有浮点类型数字具有相同的特性和行为集合。二者的差异在于,程序员通过定义类来适应问题,而不再被迫只能使用现有的用来表示机器中的存储单元的数据类型。可以根据需求,通过添加新的数据类型来拓展编程语言。编程系统欣然接受新的类,并且像对待内置类型一样地照管它们和进行类型检查。

任何程序都是你所设计的系统的一种仿真,面向对象技术的应用确实可以将大量的问题很容易地降解为一个简单的解决方案。

一旦类被建立,就可以随心所欲地创建类的任意个对象,然后去操作它们,就像它们是存在于你的待求解问题中的元素一样。事实上,面向对象程序设计的挑战之一,就是在问题空间的元素和解空间的对象之间创建一对一的映射

但是,怎样才能获得有用的对象呢?必须有某种方式产生对象的请求,使对象完成各种任务,如打开开关。每个对象都只能满足某些请求,这些请求由对象的接口(interface)所定义,决定接口的便是类型

接口确定了对某一特定对象所能发出的请求。但是,在程序中必须有满足这些请求的代码。这些代码与隐藏的数据一起构成了实现。在类型中,每一个可能的请求都有一个方法与之相关联,当向对象发送请求时,与之相关联的方法就会被调用。此过程通常被概括为:向某个对象“发送消息”(产生请求),这个对象便知道此消息的目的,然后执行对应的程序代码。

Light lt = new Light();
lt.on();
上例中, 类型/类的名称是Light,定义特定的Light对象的名称是 lt(这个特定Light对象的引用),然后调用new方法来创建该类型的新对象。为了向对象发送消息,需要声明对象的名称,并以符号链接一个消息请求。从预定义类的用户观点来看,这些差不多就是用对象来进行设计的全部。

三、每个对象都提供服务

当正在试图开发或莉姐一个程序设计时,最好的方法之一就是将对象想象为“服务提供者”。程序本身将向用户提供服务,它将通过调用其他对象提供的服务来实现这一目的。你的目标就是去创建(或者最好是在现有代码库中寻找)能够提供理想的服务来解决问题的一系列对象。
将对象看作是服务提供者还有一个附带的好处:它有助于提高对象的内聚性。 高内聚是软件设计的基本质量要求之一:这意味着一个软件构建的各个方面“组合”得很好。 人们在设计对象时所面临的一个问题是,将过多的功能都塞在一个对象中在良好的面向对象设计中,每个对象都可以很好地完成一项任务,但是它并不试图做更多的事,这样做也有利于创建能够在别处复用的新对象。
将对象作为服务提供者看待是一件伟大的简化工具,这不仅在设计过程中非常有用,而且当其他人试图理解你的代码或重用某个对象时,如果他们看出了这个对象所能提供的服务的价值,它会使调整对象以适应其设计的过程变得简单得多。

四、被隐藏的具体实现

即按类创建者和使用者的权限来设计边界:public、private、protected三种访问类型。

五、复用具体实现

代码复用是面向对象程序设计语言所提供的最了不起的有点之一。对简单地复用某个类的方式就是直接使用该类的一个对象,此外也可以将那个类的一个对象置于某个新的类中。我们称其为“创建一个成员对象”。用现有类合成新的类称为“组合”,如果是动态发生的称为“聚合”,视为“拥有”关系,如“汽车拥有殷引擎”。新类的成员对象通常都被声明为private,是的使用新类的类使用者不能访问它们。

六、继承

类是面向对象编程语言的基本单位。
当继承现有类型时,也就创造了一个新的类型。这个新的类型不仅包括现有类型的所有成员(尽管private成员被隐藏起来不可访问),而且更重要的是它复制了基类的接口,也就是说,所有可以发送给基类对象的消息同时也可以发送给子类对象,子类具有父类的基本特征。
继承(extends)有两种使用方式,一种是直接在接口中添加新方法,第二种就是覆盖(overriding)父类的现有方法,使同一方法具有不同的行为。这样就不用重新写一遍新类的所有接口的实现,只要在继承类中作简单的修改就可以了。

七、伴随多态的可互换对象

父类在调用子类相同的方法时,会根据不同的子类执行该方法的具体实现。

八、单根继承结构

在OOP中,所有的类都只有一个基类,但所有的类最终都继承自单一的基类Object。因此所有的类都有一个公共接口。

九、容器

容器也称为集合,如List(用于存储序列)、Map(也被称为关联数组,用来建立对象之间的关联)、Set(每种对象类型只持有一个)以及诸如队列、树、堆栈等更多的构件。
使用不同的容器的原因。第一,不同的容器提供了不同类型的接口和外部行为;第二,不同的容器对于某些操作具有不同的效率。
容器具有参数化类型<范型>。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值