9.1 抽象类和抽象方法
抽象类:通用接口建立起一种基本形式,以此表示所有导出类的共同部分(抽取导出类的共同的特征)。
抽象类的形式: public class abstract Demo{ }
抽象方法的形式:public abstract void method(();
1.包含抽象方法的类是抽象类。
2.当一个类继承抽象类时,如果不全部定义抽象基类的全部抽象方法,那么该类也是属于一个抽象类,编译器会强制用abstract关键之来限定该类。
3.一个抽象类可以没有任何抽象方法,这么做也许只仅仅是为了不让创建该类的对象。
4.抽象类无法创建对象。
9.2 接口
接口类的形式:public interface Demo{ }
实现接口形式:public class Test implements Demo{ }
1.使用interface修饰的类是一个完全抽象的类,接口只提供形式,不提供任何具体实现(所有的方法都是默认为抽象的)。
2.接口中的域都是默认为static和final的。
3.接口中的方法权限必须为public,并且默认就是public权限。
4.接口被用来建立类域类之间的协议。
5.一个类可以实现多个接口。
9.4 Java中的多重继承
1.当一个类继承另外一个类并且实现一个接口,当继承的类中的有方法签名跟接口的方法签名是一样时,该类可以不用实现接口中签名与继承类中方法签名相同的方法。
使用接口的原因:①为了能够向上转型为多个基类型。②防止创建该类的对象,并确保这仅仅只是一个接口
使用抽象类还是接口呢(参考)?
当抽取类的共同特征时,并且该类应该成为基类,应该使用的是抽象类。
当仅仅作为类的扩展功能,给类附加其他特征时,应该使用的是接口。
9.5 通过继承来扩展接口
1.通过接口继承另外一个接口,可以组合成一个新的接口。
2.接口可以继承多个接口。
接口继承接口:
public interface A{
public static void methodA();
}
public interface B extends A{
public static void methodB();
}
public interface C{
public static void methodC();
}
public interface D extends B,C{
public static void methodD();
}
public class E implements D{
//实现接口A、B、C、D中的方法
public void methodA(){}
public void methodB(){}
public void methodC(){}
public void methodD(){}
}
9.7 接口中的域
1.接口中的任何域都是自动static和final的,并且默认是public权限。