1。接口和内部类提供了一种用来组织和控制系统中的对象更加精细的方法。
interface 关键字使abstract的概念更向前迈进了一步。接口只提供定义,而没有任何具体的实现。
2。java类不提供类的多重继承,但是可以实现多个接口,这是java的多重机制。
接口可以使用多重继承。语法型如:interface Ia extends I2,I3{}
3。避免组合接口的名字冲突。
4。接口可以有字段,他们隐是为static 和final。
注意:接口字段不能是空final,但可以指定为非常量式的促使化。
这个应用有群组常量。
5。接口可以嵌套在类或者其他接口中。内部类和内部接口也有public 等访问权限。
可以继承内部类/接口(当然前提是可见)。语法用.操作符。例如:
class A{ public interface B{} };
class C implements A.B{};
6。一个类定义在另一个类内部,称为内部类。甚至,可以在方法和作用域内定义内部类。
内部类也是java多重继承的一种机制,但它比多重继承做的要多的多。
7。内部类可以没有名字,称为匿名内部类。一般是作为临时使用。可能是出于这样的考虑。没有必要给一个指以后重 不在使用的 类起个名字。
8。内部类可以访问外围类的所有变量,包括私有字段。这与c++的嵌套类设计完全不同,c++中只是单纯的名字隐藏机制,与外围类没有联系,也没有隐含的访问权。
9。如果不需要内部类对象与外围对象之间有联系,可以声明内部类为static,这称为嵌套类。
不能在嵌套类的对象中访问非静态的外围类对象。
10。内部类,生成独立.class文件,文件名<外围类>$<内部类>。如果在内部类中含有main函数(测试的一种方法)可以用,java <外围类>$<内部类> 来运行。
11。要想引用外部类的对象可以用.this来实现,例如类嵌套层次A.B 在 B中用A.this获取A的指针。
想在某个对象创建内部类对象,用.new 表达式。例如:A.B.C
A aa = new A ();
A.B ab = new aa.new A.B();
A.B.C abc = new ab.new A.B.C();
内部类继承也很有意思:
public class ExtendB extends A.B(){
//! ExtendB(){} //不能编译,怎么办;
ExtendC (A a){ //只能这样了,但是多重嵌套,怎么办?
a.super();
}
}
12。内部类不能被覆盖,两个内部类是完全独立的。