前面写过java内部类 查看
java内部类应该是为了隐藏和组织的模式。内部类(非静态)有个对外部类的隐藏引用,可以直接访问外部类的属性和方法。
当内部类可以向上转型为接口的时候,可以定义一个private
的内部类来完全隐藏实现细节。
interface Printer {
void print();
}
class Office {
String printerIP = "127.0.0.1";
private class BluePrinter implements Printer {
@Override
public void print() {
System.out.println("blue printer("+printerIP+") is printing.");
}
}
public Printer getPrinter() {
return new BluePrinter();
}
}
public class TestInner {
public static void main(String[] args) {
Printer printer = new Office().getPrinter();
printer.print();
}
}
任何外部类都感知不到类BluePrinter
,隐藏了实现的细节。
接口的内部类可以为接口创建公用的功能,默认就是public
, static
的。
interface Printer {
void print();
class MyPrinter implements Printer{
@Override
public void print() {
System.out.println("I am a public, static inner class of Interface");
}
}
}
public class TestInner {
public static void main(String[] args) {
Printer printer = new Printer.MyPrinter();
printer.print();
}
}
另外:
- 内部类是可以被继承的
- 内部类不能别覆盖