属性,方法,构造方法,代码块,内部类
内部类:在一个类的里面再定义一个类,内部类表示的事物是外部类的一部分,内部类单独出现没有任何意义。
内部类的访问特点:
内部类可以直接访问外部类的成员,包括私有
外部类要访问内部类的成员,必须创建对象。
静态内部类:是一种特殊的成员内部类。
Outer.Inner oi=new Outer.Inner();
调用静态内部类:
非静态方法:先创建对象,再用对象调用。
静态方法:外部类名.内部类名.方法名();
局部内部类:
将内部类定义在方法里面就叫局部内部类,类似于方法里面的局部变量。
外界是无法直接使用的,需要在方法内部创建对象并使用。
该类可以直接访问外部类的成员,也可以访问方法内的局部变量。
new Animal(){
@Override
public void eat(){
System.out.println("重写了eat方法");
}
};
这不是一个类,这是new出来的对象,真正没有名字的类是{}里面的,对于{}前面的Animal来说,要么是继承关系,要么是实现关系,如果Animal是个接口那就是实现关系,如果是个类,那就是继承关系。
匿名内部类:
隐藏了名字的内部类,可以写在成员位置,也可以写在局部位置。
new 类名或者接口名(){
重写方法;
};
匿名内部类包含了继承或实现,方法重写,创建对象。
整体就是一个类的子类对象或者接口的实现类对象。