1.6 继承
1.6.1 “是一个”与“像是一个”关系
继承时只覆盖基类的方法,因此导出类和基类是完全相同的类型,因为它们具有完全相同的接口。结果可以用一个导出类对象来完全替代一个基类对象。通常被称为替代原则。
有时在导出类型中添加了新的接口元素,这样也就扩展了接口,这个新的类型仍然可以替代基类,但是基类无法访问新添加的方法。
1.7 伴随多态的可互换对象
把一个对象不当作它所属的特定类型来对待,而是将其当作其基类的对象来对待。因此人们可以编写出不依赖于特定类型的代码。
面向对象程序设计语音使用了后期绑定的概念,当向对象发送消息时,被调用的代码直到运行时才能确定。编译器确保被调用方法的存在,并对调用参数和返回值执行类型检查,但是并不知道将被执行的确切代码。
为了执行后期绑定,Java使用一小段特殊的代码来替代绝对地址调用,这段代码使用在对象中存储的信息来计算方法体的地址,这样,根据这一小段代码的内容,每一个对象都可以具有不同的行为表现。当向一个对象发送信息时,该对象就能够知道对这条消息应该做些什么。
例如:
创建方法:
void doSomething(Shape shape){
shape.erase();
shape.draw();
}
调用这个方法:
Circle circle = new Circle();
Triangle triangle = new Triangle();
doSomething(circle);
doSomething(triangle);
对doSomething()的调用会自动正确处理,不管对象的确切类型。
把将导出类看作是它的基类的过程称为向上转型。
1.8 单根继承结构
在Java中,所有的类最终都继承自单一的基类Object。
单根继承结构保证所有对象都具备某些功能,因此在系统中可以在每个对象执行某些基本操作。所有对象都可以很容易地在堆上创建,而参数传递也得到了极大的简化。
单根继承结构使垃圾回收器的实现变得容易,由于所有对象都保证具有其类型信息,因此不会因无法确定对象的类型而陷入僵局。这对于系统级操作(如异常处理)显得尤其重要,并且给编程带来了更大的灵活性。
1.9 容器
List, Map, Set。队列,树,堆栈。
1.9.1 参数化类型
参数化类型就是一个编译器可以自动定制作用于特定类型上的类,在Java中它称为范型。
1.10 对象的创建和生命期
在使用对象时,最关键的问题之一便是它们的生成和销毁方式。每个对象为了生存都需要资源,尤其是内存,所以当我们不再需要一个对象时,它必须被清理掉。
Java完全采用了动态内存分配方式,每当想要创建新对象时,就要使用new关键字来构建此对象的动态实例。
Java提供了“垃圾回收器”机制,它可以自动发现对象何时不再被使用,并继而销毁它。垃圾回收器有效避免了内存泄漏问题。
1.11 异常处理:处理错误
异常处理将错误处理直接置于编程语言中,有时甚至置于操作系统中。异常是一种对象,从出错点被抛出,并被专门设计用来处理特定类型错误的相应的异常处理器捕获。
异常处理就像是与程序正常执行路径并行的、在错误发生时执行的另一条路径。因为是另一条完全分离的执行路径,所以它不会干扰正常的执行代码。
异常不能被忽略,它保证一定会在某处得到处理。
最后,异常提供了一种从错误状况进行可靠恢复的途径,可以进行校正,恢复程序的执行。
Java的异常处理在众多编程语音中格外引人注目,因为Java一开始就内置了异常处理,而且强制使用它。
1.12 并发编程
程序能够停下正在做的工作,转而处理某个其它问题,然后再回到主进程。
我们把问题切分成多个可独立运行的部分,从而提高程序的响应能力,这个概念称为并发。在程序中,这些彼此独立运行的部分称之为线程。
并发带来共享资源的隐患,可以共享的资源必须在使用期间被锁定。某个任务锁定某项资源,完成其任务,然后释放资源锁,使其它任务可以使用这项资源。
1.13 Java与Internet
Java解决了在万维网(WWW)上的程序设计问题。
1.13.1 Web是什么
1.客户/服务器计算技术
客户/服务器系统的核心思想是:系统具有一个中央信息存储池,用来存储某种数据,它通常存在于数据库中,可以根据需要将它分发给某些人员或机器集群。
客户/服务器概念的关键在于信息存储池的位置集中于中央,这使得它可以被修改,并且这些修改将被传播给信息消费者。信息存储池、用于分发信息的软件以及信息与软件所驻留的机器或机群被总称为服务器。驻留在用户机器上的软件与服务器进行通信,以获取信息、处理信息,然后将它们显示在被称为客户机的用户机器上。
2.Web就是一台巨型服务器
来源:CSDN
作者:咸鱼不翻身不做人
链接:https://blog.csdn.net/qq_42082161/article/details/104002857