Java进阶--对象导论

通过之前对Java的学习和最近与C++的相比,的确发现Java是一门安全方便的语言,然后感觉自己对于Java的学习也比之前来说更加热爱,所以准备继续Java的深入学习,所以重开Java进阶这个系列,帮助自己加深对于Java学习的印象。

这篇博客用来补充一下最近我认为值得琢磨的一些关于Java语言描述的话语:

所有的编程语言都提供抽象机制,人们所能解决问题的复杂性直接取决于抽象的类型和质量。

以下五个基本特性,表现了一种纯粹的面向对象程序设计方式:
1.万物皆为对象;
2.程序是对象的集合,他们通过发送消息来告知彼此所要做的;
3.每个对象都有自己的由其他对象所构成的存储;
4.每个对象都有其类型;
5.某一个特定类型的所有对象都可以接收同样的消息。

将对象想象为“服务提供者”。

将程序开发人员按角色分为类的创建者和客户端程序员(类消费者)。

访问控制的第一个原因就是让客户端程序员无法触及他们不应触及的部分;
第二个原因就是允许库设计者可以改变类内部的工作方式而不用担心会影响到客户端程序员。

Java有一种默认的访问权限,称包访问权限,这种权限之下,类可以访问在同一个包中的其他类成员。

最简单的复用某个类的方式就是直接使用该类的一个对象,将那个类的一个对象置于某个新的类中,我们称为创建一个成员对象。新的类可以由任意数量,任意类型的其他对象以任意可以实现新的类中的想要的功能的方式所组成。使用现有的类合成新的类,这种概念称为“组合”,如果组合是动态发生的,那么我们称为“聚合”。

新类的成员对象都被声明为private。

对象这种概念就是将数据和功能封装在一起。

“父类”也被称为“基类”,“超类”,子类也被称为“导出类”,“继承类”。

类型不仅仅只是描述了作用于一个对象集合上的约束条件,同时还有与其他类型之间的关系。

可以通过继承来构建一个类型层次结构。类型层次结构同时体现了几何形状之间的相似性和差异性。

通过继承产生的类型等价性是理解面向对象程序设计方法内涵的重要门槛。

有两种方法可以使基类与导出类产生差异。第一种就是直接在导出类中添加新的方法;第二种方法是改变现有基类的方法,称为覆盖。

可以使用一个子类完全替代一个父类对象,这被称为纯粹替代,通常称为替代原则。在某种意义下这是一种理想的继承方式,我们经常将这种情况下的基类与导出类之间的关系称为“是一个”的关系。

在子类中添加新的接口元素,这样也就扩展了接口。这个新的类型仍然可以替代基类,但这种替代并不完美,因为基类无法访问新的接口,我们称为“像是一个”的关系。

把子类看作父类是一种向上转型。向上转型是安全的。除非确切知道所要处理的对象,否则向下转型是不安全的。

Java支持单根继承结构,也就是终极基类:Object。单根继承保证了所有对象都具备某些功能,所有对象都可以在堆上创建。正是因为单根继承使垃圾回收机制的实现变得简单。

容器:在任何需要的时候都可以扩充自己以容纳你置于其中的东西,数组就是一种容器。

在C++中,容器是标准C++类库的一部分,经常被称为标准模板类库,也就是STL。

自定义范型也被称为参数化类型机制。

每个对象为了生存都需要资源,也就是内存。

为了追求最大执行速度,可以将对象置于堆栈中或静态存储区域。也可以在堆的内存池中动态的创建对象。这种方式知道运行时才知道需要多少对象,以及他们的生命周期如何,以及他们的具体类型是什么。而Java完全采用了动态内存分配方式(基本类型是一种特例)也就是new关键字。这是基于这点和单根继承,Java提供了“垃圾回收器”机制,他可以发现对象何时不再被使用,并销毁他,成功的避免了内存泄漏的问题。

并发执行就是多个程序在相隔基本固定的时间(通常非常短)轮流执行,而并行执行就是如今所说的多核处理器,可以实现真正的多个程序同时执行。

信息存储池,用于分发信息的软件以及软件和信息所驻留的机器或机群被总成为服务器。

你可能感兴趣的:(java,对象)