抽象类与接口的千丝万缕
抽象类:
抽象类快速入门
当父类的一些方法不能确定时,可以用abstract关键词来修饰该方法,这个方法就是抽象方法,用abstract来修饰的类就是抽象类。
抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现抽象类
抽象类,是考官比较爱问的知识点,在框架和设计模式中使用较多
抽象类使用的注意事项和细节讨论
抽象类不能被实例化,也就是不能被new
抽象类不一定要包含abstract方法,即抽象类可以没有abstract方法
一旦类包含了abstract方法,则这个类必须声明为abstract,也就是该类为抽象类
abstract只能修饰类和方法
抽象类可以拥有任意成员(抽象类的本质还是一个类),比如:非抽象方法、构造器、静态属性等等
抽象方法不能有主体(方法体)
如果一个类继承了一个抽象类,则它必须实现那个抽象类的所有抽象方法,除非它自己也声明为abstract类。
解析7:也就是说一个普通类继承一个方法为抽象方法的抽象父类时需要重写父类所有的抽象方法,若一个抽象类继承该父类时不需要重写该父类的所有抽象方法。顺便对类的继承是否需要重写总结如下。
子类继承父类是否需要重写方法总结
父类是普通类,子类是普通类:不用重写父类的方法
父类是普通类,子类是抽象类:不用重写父类的方法
如果父类是抽象类,子类是抽象类,父类方法是普通方法:不用重写普通方法
如果父类是抽象类,子类是抽象类,父类方法是抽象方法:不用重写父类抽象方法
如果父类是抽象类,子类是普通类,父类方法为抽象方法:需要重写父类抽象方法
由此看出组合中需要重写的只有5这种情况
如果父类是接口,子类是接口,则可以扩展父接口的方法
如果父类是接口,子类是抽象类,则可以部分或全部重写接口的方法
如果父类是接口,子类是一个普通类,则必须全部重写接口方法
接口:
接口快速入门
接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。
小结:接口是更加抽象的抽象的类,默认的abstract不写,抽象类里的普通方法可以有方法体,接口里的所有方法都没有方法体(JDK7.0之前)。接口体现了程序设计的多态和高内聚低耦合的设计思想。
特别说明:JDK8.0开始,接口可以有静态方法,默认方法,也就是说接口中可以有方法的具体实现。
接口使用的注意事项和细节讨论
接口不能实例化
接口中所有的方法是public方法,接口中的抽象方法,可以不用abstract修饰
一个普通类实现接口,就必须将该接口的所有方法都实现
抽象类实现接口,可以不用实现接口的方法
接口中的属性,只能是 final 的,而且是 public static final 修饰符
一个类同时可以实现多个接口(理解为接口是对于Java单继承机制的一种补充)
接口中的属性的访问形式:接口名.属性名,由此可以声明一些静态的常量属性懒得用枚举使用
接口不能继承其它的类,但是可以继承多个接口
接口的修饰符只能是 public 和默认,这点和类的修饰符是一样的
原文链接:https://blog.csdn.net/wwx1255413402/article/details/124726053
评论区