这个程序从某些意义上来说打破了JAVA的一些语法规定,比如说“单个文件里只能一个public公共类、Java不允许多重继承、类不能被申明成private或protected”。
而造成这一切的就是内部类了。
在这个程序中可以这样说:
1. MultipleExtendsText.java文件里有两个用public申明的类:MultipleExtendsText和TestA。
2. 类MultipleExtendsTest同时继承了类A、B、C。
3. 类TestB为private所申明。
//--------MultipleExtendsText.java--------
/**
*@author Donnki
*/
abstract class A{}
abstract class B{
abstract void printSomething(int x);
}
class C{
String s = "Member field in class C";
}
public class MultipleExtendsTest extends A{
public class TestA extends B{
public TestA(){
System.out.println("Constructor in inner class.");
}
void printSomething(int x){
System.out.println("Inner class 'Test'. Argument: " + x);
}
}
private class TestB extends C{}
public static void main(String[] args) {
MultipleExtendsTest met = new MultipleExtendsTest();
met.new TestA().printSomething(10);
A a = new A(){}; //匿名内部类。
System.out.println(met.new TestB().s);
}
}