面向对象思想概述
第一个面向对象语言的基本特征:
- 万物皆为对象。(封装)
- 程序是对象的集合,它们通过发送消息来告知彼此所要做的。(方法调用)
- 每个对象都有自己的由其他对象所构成的存储。(基本类型变量或自定义类型变量)
- 每个对象都拥有其类型。(每个对象都是该类型的实例,对应java中的class)
- 某一特定类型的所有对象都可以接收同样的消息。(多态)
关于public、private、protected的理解:
将开发人员按照角色分为类创建者和类使用者(think in java 中被叫做客户端程序员)。类使用者的目标是收集各种用来实现快速应用开发的类。类创建者的目标是构建类,构建类的时候只需要暴露必需的部分,隐藏其他部分。通常被隐藏的都是类内部比较脆弱的部分,防止粗心的类使用者不小心毁坏,从而减少bug的产生。
关于复用的体现
最简单的复用某个类的方式就是直接使用该类的一个对象,此外也可以将那个类的一个对象置于某个新的类中,即创建一个成员对象。
- 组合:使用现有的类组成新的类。
- 聚合:如果组合是动态发生的,就叫做聚合。
垃圾回收机制
Java的垃圾回收器被设计用来处理内存释放,垃圾回收器知道对象何时不再被使用,并自动释放对象占用的内存。这一点的实现,结合了所有对象都是继承自基类Object以及只能以一种方式创建对象(在堆上创建)这两个特性。
异常处理
大多数编程语言的错误处理机制的问题主要是依赖于程序员自身的警惕性,这种警惕性来源于一种共同的约定,而不是编程语言所强制的。Java的异常处理,异常本事是一种对象,它从错误点被“抛出”,并被专门设计用来处理特定类型错误的相应的异常处理器“捕获”。这样就保证了被抛出的异常一定会被处理,而不再是只能退出程序,可以进行校正,并恢复程序的执行。
Java语言特点
可以存储数据的几个部分:
- 寄存器(属于CPU的一部分):程序不能直接控制。
- 堆栈(位于RAM存储区):Java对象的引用存储于此。
- 堆(位于RAM存储区):存放Java对象。
- 常量存储(只读存储区):通常用来存储常量。
- 非RAM存储:例如磁盘和流化等。
对象和对象引用的比喻:
遥控器(引用)和电视机(对象),只要握住遥控器就可以保持与电视机的连接,有人想要减小音量时,实际操作的是遥控器(引用),再由遥控器来调控电视剧(对象)。如果想在房间里四处走走,同时仍能调控电视机,那么只需携带遥控器(引用)而不是电视机(对象)。
String s; //创建了一个引用,并没有初始化,此时对s进行操作,就会返回一个运行时错误。
Java中的基本数据类型都是固定大小的。
在c/c++中合法但是在Java中不合法的情况:
{
int x = 1;
{
int x = 2;
}
}
class关键字
一切皆对象,那么是什么决定了某一类对象的的外观和行为呢?Java中是用class这个关键字后面紧跟着新类型的名称。在Java中,你所做的全部工作就是定义类、生产这些类的对象、发送消息给这些对象。
类中可以设置两种类型的元素:
- 字段(或数据成员):可以是任何类型的对象,也可以是基本类型中的一种。
- 方法(或成员函数)
字段
若某个成员是基本数据类型,及时没有进行初始化,Java也会确保它获得一个默认值:
方法
方法也可以被理解为函数,方法的调用可以理解为给对象发消息。
- 参数列表 :方法的参数列表指定的是要传递给方法什么样的信息,在参数列表中必须指定每个所传递对象的类型和名字。这里传递的也是引用。
- 返回值:如果一个方法处理消息后产生了一个值,这个值的类型也需要被指定,如果不许要返回,使用void关键字标记即可。
static关键字
static主要是用来解决两种情况:一是只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本不创建任何对象。二是希望某个变量或方法不与包含它的类的任何对象关联在一起(不创建对象也能够调用这个方法)。