- 内部类:一个类定义在另一个类内部,不能有static成员
- 在外部类的静态方法中创建内部类要写全名
Parec2.Content c = q.content()
- 从内部类链接到外部类:
- 内部类拥有其外部类的所有元素的访问权限
- 原因:创建内部类时会获得一个外部类的引用
- 生成对外部类对象的引用:外部类名+.:
- 在外部类创建内部类对象:必须使用外部类的对象创建内部类,因为内部类对象隐式地保存了指向外部类的引用
class A{
public class b{}
public void static main(String[] args){
A a = new A();
A.B b = a.new B();
}
}
```
* 嵌套类:如果外部类对象与内部类对象之间没有关系,可以将内部类声明为static,但不能从嵌套类访问非静态外围类对象
* 使用内部类的意义:可以间接实现多重继承
* Class对象命名:OuterClass$InnerClass
* 匿名内部类:匿名内部类也就是没有名字的内部类,使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口
* 不使用匿名内部类:
```java
abstract class Person {
public abstract void eat();
}
class Child extends Person {
public void eat() {
System.out.println("eat something");
}
}
public class Demo {
public static void main(String[] args) {
Person p = new Child();
p.eat();
}
}
```
* 实现接口:
```java
interface Person {
public void eat();
}
public class Demo {
public static void main(String[] args) {
Person p = new Person() {
public void eat() {
System.out.println("eat something");
}
};
p.eat();
}
}
```
* 最常用的情况就是在多线程的实现上,因为要实现多线程必须继承Thread类或是继承Runnable接口<br>
```java
public class Demo {
public static void main(String[] args) {
Thread t = new Thread() {
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.print(i + " ");
}
}
};
t.start();
}
}
```