关于抽象类、抽象方法以及接口
关于抽象类、抽象方法 abstract修饰 抽象类不能被实例化,抽象类里可以包含抽象方法也可以不包含;但有抽象方法的类必须是抽象类。 抽象类可以包含: 成员变量 方法(普通方法和抽象方法) 构造器(不是用来构造对象的,主要是给子类调用) 初始化块 内部类(接口、枚举) 含有抽象方法的类,包括: 直接定义了一个抽象方法; 或继承了一个抽象父类,但没有完全实现父类包含的抽象方法; 或实现了一个接口,但没有完全实现接口包含的方法 只能定义为抽象类。 利用抽象方法和抽象类的优势,可以更好地发挥多态的优势,使得程序更加灵活; abstract和final不能同时修饰同一个类或方法 当使用abstract修饰类时,表明这个类只能被继承; 当使用abstract修饰方法时,表明这个方法必须由子类提供实现(即重写)。 而final修饰的类不能被继承,final修饰的方法不能被重写,因此final和abstract不能同时使用。 abstract和static不能修饰同一个方法, 但它们可以同时修饰内部类。 abstract和private不能修饰同一个方法。 abstract不能修饰成员变量、局部变量,也不能修饰构造器。 使用模板模式的两种情形 抽象父类可以只定义需要使用的某些方法,把不能实现的部分抽象成抽象方法,留给子类去实现。 父类中可能包含需要调用其他方法的方法,这些被调方法既可以由父类实现