内部类
内部类的介绍:
大致意思就是说:
当我们在一个类(A)的内部定义一个简单的变量(B)不足以描述该变量的详细 情况时,我们可以将其(B)定义为一个类,以便于更加详细地描述该事物(B)。
内部类的分类
例子:
class Person{
//-------------------局部内部类-----------------------
//局部内部类1
{
class Brain1
{
// to do
}
}
public void method()
{
//局部内部类2
class Brain2
{
// to do
}
}
public Person()
{
class Brain3
{
// to do
}
}
//--------------------------------------------------
//--------------------成员内部类---------------------
//静态
static class C1{}
//非静态
class C2{}
//关于成员内部类所要注意的点
1. 作为外部类的成员来说
> 可以调用外部类的结构
> 可以被static修饰(因为其本身是一个外部类的成员。但外部类不可被static修饰)
> 可以被4种权限符所修饰
2. 其本身作为一个类来说
> 它可以定义自己的属性、方法、构造器
> 可以被final修饰,表示不可被继承。言外之意,不被final修饰的话是可以被继承的
> 可以被abstract修饰
}
//------------------------------------------------------
成员内部类的实例化
静态
Person.C1 pc1 = new Person.C1();
非静态
Person p = new Person(); Person.C2 pc2 = p.new C2();
局部内部类的使用
只说较为常用的(依然很少用,只是相较于所有局部内部类中而言)
拿Comparable接口举例,以下方法是返回一个实现了Comparable接口的实例
方式一:
public Comparable getComparable()
{
class MyComparable implements Comparable
{
@Override
public int compareTo()
{
// to do
return 0;
}
}
return new MyComparable();
}
方式二:
public Comparable getComparable()
{
return new MyComparable
{
@Override
public int compareTo()
{
// to do
return 0;
}
}
}