Java学习笔记(十一)
1、请描述abstract class 和interface的区别?
(1)实现方式
抽象类是一个类,可以像普通类一样拥有属性和方法,但是它的部分方法没有具体实现,需要由子类来实现。抽象类使用关键字abstract来定义。在Java中,一个类只能继承一个抽象类。
接口没有属性,只有方法和常量,所有的方法都是抽象的,没有具体实现。接口使用关键字interface来定义。在Java中,一个类可以实现多个接口。
(2)实现方式的影响
由于Java不支持多重继承,所以如果一个类继承了一个抽象类,它就不能再继承其他类了。但是,一个类可以实现多个接口,从而达到类似多重继承的效果。
另外,抽象类可以包含具体的方法实现,而接口中只能包含抽象方法和常量。这意味着,如果我们需要在多个类中共用一些方法的实现,可以将这些方法放在抽象类中,而不是接口中。
(3)设计目的
抽象类的设计目的是为了提供一种基础类,它的子类可以继承这些基础方法和属性,并实现自己特定的方法和属性。抽象类常用于定义模板方法,即父类定义好算法框架,而具体的实现由子类来完成。
接口的设计目的是为了定义一组公共的方法和常量,以便实现类可以按照这些方法和常量来进行编写。接口常用于实现多态和解耦合。
2、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
是。可以。可以。
3、请描述你理解的模板方法设计模式?
当功能内部一部分实现是确定的,一部分实现是不确定的。这时可以
把不确定的部分暴露出去,让子类去实现。
将代码不变部分封装在父类中,保证了代码的一致性和可维护性,同时将可变的部分留给子类来实现,保证了代码的灵活性和可扩展性。
抽象类(Abstract Class):定义算法框架,包含一系列抽象方法和具体方法,其中抽象方法由子类来实现。
具体类(Concrete Class):实现抽象类中的抽象方法,并在具体方法中调用抽象方法,从而完成算法的实现

浙公网安备 33010602011771号