内部类
public class Person {
private boolean live = true;
class Heart {
public void jump() {
if (live) {
System.out.println("心脏在跳动");
} else {
System.out.println("心脏不跳了");
}
}
}
public boolean isLive() {
return live;
}
public void setLive(boolean live) {
this.live = live;
}
}
public static void main(String[] args) {
Person p = new Person();
Heart heart = p.new Heart();
heart.jump();
p.setLive(false);
heart.jump();
}
}
匿名内部类
- 匿名内部类:是内部类的简化写法。它的本质是一个带具体实现的父类或者父接口的匿名的子类对象。在实际的开发当中:当我们使用一个接口的时候,需要做以下步骤:
- 定义子类
- 重写接口中的方法
- 创建子类对象
- 通过子类对象调用重写后的方法
public abstract class FlyAble{
public abstract void fly();
}
public class InnerDemo {
public static void main(String[] args) {
FlyAble f = new FlyAble(){
public void fly() {
System.out.println("我飞了~~~");
}
};
f.fly();
}
}
public class InnerDemo2 {
public static void main(String[] args) {
FlyAble f = new FlyAble(){
public void fly() {
System.out.println("我飞了~~~");
}
};
showFly(f);
}
public static void showFly(FlyAble f) {
f.fly();
}
}
上面的程序也可以写为:
public class InnerDemo3 {
public static void main(String[] args) {
showFly( new FlyAble(){
public void fly() {
System.out.println("我飞了~~~");
}
});
}
public static void showFly(FlyAble f) {
f.fly();
}
}