域有两种类型:实例域(包括final实例域)和类域(也称静态域)

初始化数据域的3种方法:

a. 在构造器中设置值

b. 在声明中赋值

c. 初始化块

静态常量的使用方法:类名.常量名  eg.获得的方法:Math.PI

域与局部变量的主要不同点:必须明确地初始化方法中的局部变量。Java不对局部变量进行初始化,但是会对对象的实例域进行初始化。

构造器

对象构造的几种机制:

a. 重载

b. 默认域初始化

c. 无参构造器

d. 显示域初始化(常量或调用方法)

e. 调用另一个构造器

f. 初始化块

调用构造器的具体处理步骤:

a. 所有数据域被初始化为默认值(0、false或full)

b. 按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块

c. 如果构造器第一行调用了第二个构造器,则执行第二个构造器主体

d. 执行这个构造器的主体

不能在构造器中定义与实例域重名的局部变量。

方法

方法的两个参数:

a. 隐式参数,即方法名前的类对象

b. 显式参数,即方法名后括号中的数值

this可表示隐参,用来将实例域和局部变量明显区别开。

静态方法

静态方法没有隐参,即没有this参数。

静态方法的调用:

a. 类名.方法(方法可访问自身静态域)

b. 对象.方法(方法中的static被省略,调用结果与对象无关系)

使用静态方法的两种情况:

a. 不需要访问对象状态

b. 只访问类的静态域

方法参数的使用情况:

a. 一个方法不能修改一个基本数据类型的参数(即数值型和布尔型)

b. 一个方法可以改变一个对象参数的状态

c. 一个方法不能让对象参数引用一个新的对象

继承机制

子类对父类成员的可访问特性:子类继承父类的成员,但对父类成员的可访问性却由访问特性控制。父类成员方法继承至子类后,其待遇与子类相同修饰符修饰的成员方法一样。

子类构造方法的定义与执行:调用父类构造方法所使用的super是java语言的关键字,用来表示直接父类的引用,由于Java的单继承机制,所以super是个很明确的概念。

this与super的联系与区别:关键字this有两个用途:一是引用隐式参数,二是调用该类其他的构造器。同样,super关键字也有两个用途:一是调用超类的方法,二是调用超类的构造器。在调用构造器的时候,使用方式很相似。调用构造器的语句只能作为另一个构造器的第一条语句出现。构造参数既可以传递给本类(this)的其他构造器,也可以传递给超类(super)的构造器。

多态

多态的最佳定义:一个对象可以指示多种实际类型的现象被称为多态

动态绑定机制:调用的方法依赖于隐式参数的实际类型,并在运行时实现动态绑定。父类方法与覆盖的子类方法可以有可协变得返回类型。动态绑定机制中的虚拟机在继承层次内调用方法,若没有则沿继承链向上寻找。

阻止继承

final类的方法自动为final,而不包括域。

内联:一个没有被覆盖并且很短的方法,编译器可以对它进行优化处理。

强制类型转换

进行强制类型转换的原因:在暂时忽视对象的实际类型之后,使用对象的全部功能(可以理解为复原)

类型:类型描述了一个变量所引用的以及能够引用的对象类型

注释:将超类的引用赋给子类变量时,必须进行类型转换,才能通过运行时的检查,在继承链上进行向下的类型转换,并且“谎报”有关对象包含的内容,会产生异常。

抽象类

抽象类不能被实例化,但可以定义一个抽象类的对象变量,但是它只能引用非抽象子类的对象。

Object类

Object类为所有类的超类,object类提供3个服务,equals方法,hashCode方法,toString方法。子类可以覆盖这3个方法。

equals方法:检测一个对象是否等于另一个对象。Object:比较两个对象是否具有相同的引用。子类可以定义为比较两个对象状态的相等

hashCode方法:由对象导出的一个整型值。Object:导出对象的存储地址

toString方法:返回对象值得字符串。Object:打印输出对象所属的类名和散列码