// 本人只是java初学者,以下内容可能来自书上,可能是感想
java没有多重继承,只有单继承
java接口是一组抽象的行为,可以被混合到任何类中,从而给它添超类不支持的行为
java接口只包含抽象的方法定义和常量——既没有实例变量,也没有方法实现
实现和使用接口
public class AnimatedSign extends javax.swing.JApplet
implements Runnable {
//……
}
javax.swing.JApplet 是超类,但接口Runnable扩展了它实现的行为
由于接口只提供了抽象的定义,因此必须在自己的类中使用 同样的 特征标 来实现这些方法
(什么是特征标? 同样的又是哪几种?)
实现接口时,必须实现该接口中所有的方法,而不能有选择的实现其中的某些。通过实现接口,表明这个类支持整个接口。
类实现接口后,其子类将继承这些新方法<并可以覆盖或重载它们>,就像超类定义了这些方法一样。若类是从实现特定接口的超类派生而来的,而不必在类定义中包含关键字implements(感觉只要不加new的话,还是加上吧,避免误解)
实现多个接口
(类是单继承的)与类不同,可以在自己的类中包含任意数目的接口,类将实现这些接口中的所有行为。要在类中包含多个接口,只需要将名称用逗号隔开
public class AnimatedSign extends javax.swing.JApplet
implements Runnable, Observable {
//……
}
创建新的接口
interface Expandable {
//……
}
在接口定义内,可以有方法和变量
接口内的方法定义是公有和抽象的,可以显式的声明这一点,若没有包括这些限定符,它们将被自动的转换为公有的和抽象的。不能在接口内将方法声明为私有或保护的。
接口还可以包含变量,但变量必须声明为公有、静态和final的,或者不使用限定符,将其隐式的声明为这样的
public interface Expandable {
public static final int increment = 10;
long capacity = 15000; // become public static and final
public abstract void expand( ); //explicitly public and abstract
void contract ( ); // effectively public and abstract
}
接口必须是公有的或包保护的?,就像类一样,但是如果声明接口时没有使用限定符public,接口不会自动将其方法转换为公有和抽象的,也不会将其常量转换为公有的。非公有接口的方法和常量也是非公有的,这些方法和常量只能被同一个包中的类和其他接口使用。
与类一样,接口也可以属于某个包。接口还可以导入其他包中的接口和类,就像类一样。
2017年8月16日10:15:56