一、内部类定义:
一个类的定义放在另一个类的内部,这个类就叫做内部类。
二、内部类的特点:
1、内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 。
2、内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的 。
3、内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量 。
三、内部类分类:分四种
1) 静态内部类:
必须以static关键字标注
只能访问外部类中的静态的成员变量或者是静态的方法
访问一个内部类使应该这样
outerClass.innerClass inter = new outerClass.innerClass();
不能直接实例化内部类
2)成员内部类:
定义在一个类的内部,但是没有static关键字修饰
生成示例的方法outerClass.innerClass inter = (new outerClass()).new innerClass()
对外部类变量的引用outClass.this.variale
可以访问外部类的静态与非静态方法
[Java] 纯文本查看 复制代码
class B extends TestPojo implements TestInterface {
// 内部类 B
public void run(){
System.out.println("跑!");
} // 重写的接口方法
public void testf() {
System.out.println("重写方法!");
} } // 方法里面调用内部类
public void test(){
B b = new B() ;
b.testf() ;
b.run() ;
b.testpojo() ;
} // 方法测试
public static void main(String[] args) {
A a = new A() ;
a.test() ;
}
}
// 定义了一个接口
interface TestInterface{
public void testf() ;
}
// 定义了一个普通类
class TestPojo {
public void testpojo(){
System.out.println("一个类");
}
}
// 实现 调用内部类里面的方法
class Textone {
public static void main(String[] args) {
A.B b = new A().new B() ; //调用类A里面的内部类B
b.testf() ;
b.run() ;
b.testpojo() ;
}
}
}