java是一门面向对象的语言。
1.抽象机制
所有的编程语言都提供抽象机制,它代表着对一种概念,抽象的类型和质量取决于所解决的问题。java之所以是一门面向对象语言,是它对所有待解决的的问题抽象成"对象",在程序中以对象的形式去处理问题。
1.1面向对象语言基本特征
a.万物皆对象
b.程序是对象的集合
c.每个对象都有自己的由其他对象所构成的存储:可以通过创建包含现有对象的方式来创建新类型的对象。比如:继承,组合,代理等。
e.每个对象都有类型
f.某一特定类型的所有对象,都可以接收到同样的信息:继承机制,子类可以直接调用父类的方法。
2.每个对象都有一个接口(或表达为方法更好)
亚里士多德提出了鱼类和鸟类这样的概念。-
在java中,程序设计(仿真程序设计)是创建新的数据类型,用class关键字去代替,它表达的是具有相同特性(数据元素)和行为(功能)的对象集合------->类的定义。
3.每个对象都提供服务
将对象想为“服务提供者”,程序本身通过向用户服务,它调用其他对象所提供的服务来解决问题
4.被隐藏的具体实现
访问权限:private,default,protect,public
5.复用具体实现
产生一个可复用的对象,它可供重复使用。最简单地复用某个类的方式就是直接创建一个类的对象:比如组合。
6.继承
在创建了一个类之后,某个新类与其具有相似的功能,此时不需要在创建一个新类。直接继承即可。
7.伴随多态的可互换对象
在泛型和面向接口编程中有体现。
在面向接口编程中,可以使用基类去申明相应类型的代码。
这个问题是面向接口编程的思想。答案是:编译器不可能产生传统意义上的函数调用。在非面向对象编程的编译器里产生的函数调用会引起所谓的前期绑定,即意味这编译器将产生对一个具体函数名字的调用。而在OOP语言中采用了后期绑定的概念。当向对象发送消息时,被调用的代码知道运行时才能确定。在某些语言中,方法在默认情况下不是动态绑定的,而在Java中,动态绑定是默认行为,不需要额外的关键字来实现多态。(C++中是使用关键字virtual来实现)
8.单根继承结构
在OOP中,是否所有的类最终都继承自单一的基类?在Java中:是的。这个终极基类就是Object。
单根继承结构保证所有对象都具备某些功能。
单根继承结构使垃圾回收的实现变的容易。由于所有对象都保证具有其类型信息,因此不会因无法确定对象的类型而陷入僵局,这对于系统级操作(如异常处理)显得尤其重要,并且给编程带来了更大的灵活性。
9.容器(集合)
在处理某个问题上,你不知道自己需要创建多少个对象,或者他们存活多久,那么就不可能知道如何存储这么对象。容器可以解决问题。
10.对象的创建和生命周期
在使用对象时,最关键的问题之一就是它们的生成和销毁方式。
Java采用了动态内存分配方式,(基本类型只是一个种特例),每当想要创建新对象时,就要使用new关键字来构造此对象的动态实例。
对象生命周期。对于允许在堆栈上创建对象的语言,编译器可以确定对象的存活时间,并可以自动销毁它。如果是在堆上创建对象,编译器就会对它的生命对象周期一无所知.??????
Java的垃圾回收机制被设计用来处理内存释放问题。垃圾回收器“知道”对象何时不再被使用,并自动释放对象占用的内存。
11.异常处理:处理错误
编程语言问世,错误处理就始终就是最困难的问题之一。Java的异常处理在众多编程语言中格外引人注目,因为Java在一开始就内置了异常处理,而且必须强制使用他。异常处理在面向对象语言出现之前就出现了。
12.并发编程
在计算机编程中有一个基本概念们,就是在同一个时刻处理抖个任务的思想。共享资源,如果有多个并行任务都要访问同一项资源,那么可能就会出现问题。