Java编程思想总结篇(1-11章学习笔记)——第一章

总结篇如期而至,现在我们开始顺着目录开始总结。

第一章 对象导论(说白了是对以后章节的总括)

1.先讲了对象和抽象的概念:

抽象:人们解决问题的复杂性取决于抽象的类型和质量,所谓抽象是指抽象什么。

对象:我们将问题空间的元素及其在解空间中的表示。

2.讲了对象的五个基本特征:

a.万物皆可对象

b.程序是对象的集合,相互传递消息告诉彼此要做的

c.每个对象都有拥有类型

d.每个对象都有自己的有其他对象所构成的储存(听起来不像人话,但是它的意思是用含有现有对象的包方式创建新类型的对象)

e.某一特定类型的所有对象都可接收同样的消息

然后有一个简介描述:对象具有状态(内部数据)、行为(方法)和标识(唯一地址)

3.讲了类的简要概念:

类描述了具有相同特性(数据元素)和行为(功能) 的对象集合,实际上就是一个数据类型。就相当于浮点型,但是二者区别就是,程序员通过类来适应问题,而不再被迫只能使用现有的用来表示机器中的储存单元的数据类型。

4.讲了接口的简要概念:

这里引入一张图片,书上插图(UML设计图):

 

接口确定了对某一特定对象所能发出的请求。程序中必须有满足这些请求的代码,这些代码与隐藏的数据一起构成了实现。每个可能的请求都有一个方法与之相关联,当对象发送请求时,与之相关联的方法就会被调用。如下:

Light a=new Light();

a.on();

这样就可以调用Light类的a对象的名为on的方法

5.理解一个程序设计时,最好的方法之一是将对象想象为“服务提供者“。我们的目标就是去创建(或者寻找)能够理想的服务来解决问题的一些列对象。其好处就是提高对象内聚性,即一个软件构件各方面”组合“得很好。要避免将过多的功能都塞在同一对象中。

6.被隐藏的具体实现:

类创建者(那些创建新数据类型的程序员)和客户端程序员(那些在其应用中使用数据类型的类消费者)访问的范围是不同的,类创建者有时需要隐藏一些东西,暴露必要部分,因为隐藏的部分通常是很脆弱的,他们很容易被不知情的客户端程序员毁坏。

访问权限:

a.public——任何人可用

b.private——只有类创建者和类型内部方法可访问

c.protected——继承的类可访问

d.默认访问权限,有时也称friendly——没有使用前面任何指定词时发挥作用,通常称包访问权限,这种权限下,类可访问同一个包中其他类成员,在包之外,如同指定了private一样。

protected指明“就类用户而言,这是private的,但对于任何继承于此类的导出类或其他任何位于同一个包内的类来说,它却是可以访问的”。

7.组合:

使用现有的类合成新的类,被称为组合,如果组合动态发生,称为聚合。

考虑问题应优先考虑组合,在考虑继承,到底是该用组合还是继承,一个最清晰的判断方法就是问一问自己是否需要从新类向基类进行向上转型,需要的话就用继承,不需要的话就用组合方式。

8.继承:

一个基类型包含所有导出类型共享的特性和行为,子类复制了基类的接口,与基类具有相同类型。改变现有基类的方法的行为,称为覆盖那个方法。

只有非private方法才可以被覆盖,但是在子类中,新方法名最好不要与基类的private方法采取同一名字(虽然没关系,但容易误解,以为能够覆盖基类的private方法)。

Java类中属性域的访问操作都由编译器解析,因此不是多态的。父类和子类的同名属性都会分配不同的存储空间

9.多态:

处理类型的层次结构时,经常想把一个对象不当作属于的特定类型来对待,而是将其当作其基类的对象来对待(泛化)。

前期绑定:编译器将产生一个具体函数名字的调用,而运行时将这个调用解析到将要被执行代码的绝对地址。

后期绑定||动态绑定:面向对象程序设计语言使用了后期绑定的概念,当向对象发送消息时没被调用的代码直到运行时才确定。

编译器确保被调用方法的存在,并对调用参数和返回值执行类型检查(Java是强类型的语言,无法提供此类保证的语言被称为是弱类型的),但是并不知道将被执行的确切代码。

把将导出类看做是它的基类的过程称为向上转型。

Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定。

构造函数并不具有多态性,它们实际上是static方法,只不过该static声明是隐式的。

在父类构造函数内部调用具有多态行为的函数将导致无法预测的结果。

10.单根继承:

Java中的所有类最终都继承自单一基类:Object

在单根继承结构中所有对象都具有一个共用接口,所以它们归根结底都是相同的基本类型。所有对象都具备某些功能,所有对象都可以很容易的在堆上创建,而参数传递也得到了极大的简化。也使垃圾回事变得容易得多。

11.容器:

不需要知道将来会把多少个对象置于容器中,只需要创建一个容器对象,然后让它处理所有细节。

a.不同容器提供不同类型的接口和外部行为

b.不同容器对于某些操作具有不同效率

12.参数化类型:

范型,JavaSE5以前,容器存储的对象都只具有Java通用类型Object,这使得容器十分容易被复用,因此范型出现,形如:

ArrayList<Shape>shapes=new ArrayList<>();

13.对象的创建和生命期:

Java完全采用了动态内存分配方式,每当想要创建时就要用new来创建。并且Java提供”垃圾回收器“机制,自动发现对象何时不再使用,继而销毁它,不用再像C++一样delete了。

14.异常处理:处理错误:

Java将异常处理直接置于编程语言中,异常是一种对象,从出错地点被”抛出“,被处理相应类型的异常处理器”捕获“。异常处理就像与程序正常执行并行的,错误发生时执行的另一条路径。不会干扰正常执行代码。Java内置异常处理并强制使用。它是唯一可接受的错误报告方式。

15.并发编程:

把问题切分成多个可独立运行的部分,提高程序响应能力。独立运行的部分称为线程,上述概念称为”并发“。

隐患:共享资源。多个并行任务访问同一资源,就会出问题。解决办法:某个任务锁定某项资源,完成其任务,然后释放资源锁,使其他任务可使用此资源。

16.Java与Internet:

Java与解决了万维网上的程序问题,后续章节再细细说来。

17.is-a关系和is-like-a关系:

1.is-a关系属于纯继承,即只有在基类中已经建立的方法才可以在子类中被覆盖。

基类和子类有着完全相同的接口,这样向上转型时永远不需要知道正在处理的对象的确切类型,这通过多态来实现。

2.is-like-a关系:子类扩展了基类接口。它有着相同的基本接口,但是他还具有由额外方法实现的其他特性。

缺点就是子类中接口的扩展部分不能被基类访问,因此一旦向上转型,就不能调用那些新方法。

即将开启第二章ing...

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值