对象的构造以及初始化:
调用本类构造方法:this
调用直接父类工作方法:super
This或者super要放在第一条语句,而且只有一条
如果没有this及super 编译器会自动加上super构成不带参数的构造法方法
内部类的定义:
将类的定义置于一个类的内部即可,编译器生成xxxx$xxxx的class文件,内部类不能与外部类同名。 在封装其他类的内部使用方法与普通类相同,若要在其它地方使用,需要在类名前要冠以外部类的名字,在用new创建一个内部类时候,也要在new前面冠以对象变量 即就是 外部对象.new 内部类名(参数)
内部类可以直接访问外部类的字段及方法 如果内部类中有与外部类同名的字段或方法,可以用 外部类名.this.字段
内部类与成员,它前面也可以用访问控制字符和其他修饰符:访问控制字符:public,protect,private。Final ,abstract
Static修饰符:可以用来修饰内部类 用力啊表示该内部类实际上是一种外部类。因为它与外部类实例无关。在使用的时候1’在实例化static类时,在new前面不需要用对象实例变量2‘static类不能访其外部类的非static字段以及方法,即只能访问static成员。3’static方法中不能访问非static的域及方法,也不能够不带前缀的new一个非static的内部类
局部类的特点:不能够用public,private,protected,static等修饰,但是可以被final或者abstract修饰。可以访问其外部类的成员。不能够访问该方法的局部变量,除非是final局部变量。
例如
class Outer
{
private int size =5;
public Object makeTheInner(int localVar)
{
final int finalLocalVar = 99;
class Inner{
public String toString()
{
return ("Innersize:" + size+"finallocvalvar"+finalLocalVar);
}
}
return new Inner();
}
}
匿名类:
1:不取名字,直接用其弗雷或接口的名字。
2:类的定义的同时就创建实例,即类的定义前面有一个new
New 类名/接口名()
{……}
不使用关键词class,也不使用extends及implement。
3:在构造对象时,使用父类的构造方法。
不能够定义构造方法,因为它没有名字。如果用new对象时,要带参数,则使用父类的构造方法。
如一个比较大小的排序接口:
Array.<Book> sort (books,new Comparator<Book>(){
Public compare(Book b1,Book b2)
{
Return b1.getPrice() - b2.getPrice();
}});