恩,总结的很不错。~接口和抽象类的概念很容易混淆。
个人感觉,抽象类是一个类,他具备类的一些特征,如可以单继承,可以有继承体系。但是类中的方法只有方法声明,而没有方法体,这是用abstract来修饰方法和类名,这样构造了抽象类。我们创建类是为了描述一类事物的属性和行为,类就像是图纸。是为了创建对象而存在的。那么使用这些属性和行为一定要创建对象。所以抽象类需要子类并且覆盖抽象类中的所有抽象方法,才可以实例化,否则,该子类还是一个抽线类。当然抽象类可以封装私有属性,但是要对外提供set,get方法。我们也可以在抽象类中定义空参和带参数的构造函数,可以对子类的创建对象的时候初始化。这是我个人理解的抽象类。
接口中的理解就是首先他是功能的扩展,我们说子类继承父类关系时必须要有所属的关系,ls a的时候才可以实现继承的关系。那么我想要获取不同属性事物的功能,怎么办呢?这时候可以用接口来实现。降低了程序的耦合性。假若需要更改错误的时候,只需要单独对一个接口进行修改就可以,而不必连关联的类也修改。是对外暴露的规则。接口是需要实现并且覆盖它的所有抽象方法才可以创建对象,否则实现该接口的类还是抽象类。简单理解就是,接口中的所有方法都是抽象方法。必须被实现接口类全部复写,该类才可以实例化。
另外,要注意的是,接口的修饰符是固定的。即使不写,JVM也会默认使用固定的修饰符。
成员变量 public static final
成员方法 public abstract
这是我个人的一点理解。希望和大家分享一下~ |