5、 处理对象的通用方法ide
1. toString方法。全部的类都从Object中继承了这个方法。当打印对象时,其实是在调用该方法。另外,当对象和字符串相连时,也会自动调用该方法。经过重写自定义。
2. equals方法。这个方法用于比较引用类型是否引用的是同一个对象,能够经过重写自定义。
6、 final修饰符
1. final修饰变量时,表示该变量一旦得到了初始值后就不可改变。
对于final修饰的成员变量,因为成员变量的初始值能够被系统默认赋初值,也能够由构造器或者构造块赋初值,所以,一旦初始化后,就不能在普通方法中对成员变量从新赋值了。final成员变量必须显式初始化系统不会对其进行隐式的赋值。
对于final修饰的局部变量,既能够在定义时也能够不在定义时指定默认值,后者状况能够在后面代码中指定初始值,但只能一次。
对于final修饰的引用类型变量,final只保证这个引用所引用的地址不会改变,即一直引用同一对象,但这个对象彻底能够发生改变。
2. final修饰的方法不可被重写。
3. final修饰的类不可有子类。
7、 抽象类
1. 能够包含抽象方法的类是抽象类,经过abstract关键字声明。抽象类不能被实例化,即便其中不包含抽象方法。抽象类能够包含类的各类成员,其构造器不能用于建立实例,主要是用于被子类调用。
2. 抽象类与普通类的差异在于,能够包含抽象方法,不能够被初始化。
3. 抽象类被当作父类被其余子类继承。它是从多个具体类中抽象出来的父类,做为其子类的模板,避免子类设计的随意性,体现了模板模式的设计。
8、 接口
1. 接口定义的是多个类共同的公共行为规范,其中定义了一组抽象方法做为共用方法。使用interface关键字声明。
2. 一个接口能够有多个直接父接口,但接口只能继承接口,不能继承类。
3. 接口的定义只是一种规范,不能包含构造器和初始化块定义。接口中包括常量属性,抽象方法,内部类(接口)和枚举类定义。需指定为public访问控制修饰符。
4. 接口里的常量属性是接口相关的,系统会自动指定其为public static final,并在定义时指定初值。接口里的方法默认使用public abstract,接口里的内部类和枚举类默认采用public static。
5. 接口能够多重继承,多个父接口采用逗号隔开。
6. 接口不能用于建立实例,但接口能够用于声明引用类型的变量。一个类能够实现多个接口。实现类必须实现所有抽象方法,不然该类须保留该抽象方法并声明为抽象类。
9、 内部类
1. 在一个类的内部再定义的类叫作内部类。能够定义在一个类中的任何位置,包括方法体中(局部内部类)。内部类提供了更好的封装,能够把其细节隐藏在外部内以内而不容许包中的其余类访问。
2. 内部类的成员能够直接访问外部类的私有成员,而外部类成员不容许访问内部类的成员。
3. 外部类使用内部类的细节时,须要实例化内部类的对象,而后使用其中的属性细节。可是对于内部类,能够直接使用外部类的成员属性,调用其方法。由于在非静态类内部类中,保存了一个它所寄存的外部类对象的引用。
4. 变量的查找顺序为:内部类方法体、内部类中,外部类中。若重名,则this表示内部类对象,外部类名.this表示外部类。
5. 静态内部类(static)将内部类相关于外部类。静态内部类中定义的实例方法不能访问外部类中实例属性。
6. 容许在接口中定义内部类,且其中定义的内部类只能是public访问权限的静态内部类。
7. 在外部类之外的地方访问内部类,则内部类不能使用private访问权限。声明内部类对象须要写明类全名:外部类名.内部类名 内部类对象名。若是有包名,还须要写明包名。在外部类之外建立实例时,必须先建立其外部类的对象。语法格式以下:OuterInstance.new InnerConstructor()
8. 对于继承了非静态内部类的子类,须要在其构造函数中显式调用父类的构造函数,并传入其父类寄存于外部类的对象引用。
9. 静态内部类对象在初始化时,使用外部类直接调用内部类的构造方法。
10. 定义在方法体中的类称为局部内部类,仅在方法中有效。它既不能在外部类之外的地方使用,也不能使用static修饰。对于其子类的定义,在定义在方法体中。
11. 建立匿名内部类时会当即建立一个该类的实例,而后这个类的定义会当即消失,不能重复使用,必须实现一个接口或者一个父类。它不能显式建立构造器,但能够建立初始化块。