接口:
1、接口其实就是若干常量和抽象方法的集合;
2、接口使用 interface 关键字来声明,可以看做是一种特殊的抽象类,可以指定一个类必须做什么,而不是规定它如何去做。
3、接口其实就是“特殊“的抽象类:接口里面的成员变量全是常量,不能再改变它的初始值;且成员变量默认都是 public static final 的,必须显示的初始化,一般省略。
接口里面的方法全部都是抽象方法,它需要其它的接口
4、接口其实和类的继承格式一样,接口与之间也可以继承,子接口可以继承父接口中的常量和抽象方法并添加新的抽象方法等。但是可以用类去继承接口并实现那些抽象方法。用关键字implements;
格式:
class 类名 extends 父类 implements 多个接口 {
实现方法
}
5、接口中没有构造方法,且接口不能被实例化。
6、接口继承接口时,不能实现上一个接口的方法,但是可以继承多个接口,接口的多继承特点弥补了类的单继承。
抽象类:
1、抽象的类或者方法用 abstract 修饰符来表示抽象方法和抽象类,抽象类中也包含成员变量,一样的要用abstract修饰。
2、类即使不包含抽象方法,也可以被声明为抽象类,防止被实例化。抽象方法必须在子类中被实现。
3、有抽象方法的类,这个类也必须被抽象化。
注意:a、抽象类不能直接使用,必须用子类去实现抽象类,然后使用其子类的实例。
b、不能有抽象构造方法或抽象静态方法。
4、当类是一个抽象类的子类,并且不能为任何抽象方法提供任何实现细节或方法主体时;这是的这个类也必须是抽象类。
5、包含抽象方法的类一定是抽象类”就是正确的。反之错误。
abstract class People{} //抽象类
abstract class students(){}//抽象方法