美文网首页
Java中类,抽象类,接口的异同

Java中类,抽象类,接口的异同

作者: 慕辙 | 来源:发表于2019-03-03 16:42 被阅读0次

    抽象类:
    当不同类中有两个同名方法,按已有的设计考虑,应该需要把这个方法放在父类,子类继承这个方法。但当不同类中同名方法的实现完全不同时,这样的考虑显然行不通。那我们把这个同名方法声明为一个抽象方法只给出方法的声明,没有具体实现。子类再根据自己的需要去给这个方法相应实现。
    抽象方法只能在抽象类中,但是抽象类并不是一定要包含抽象方法。
    没有抽象方法的抽象类也是有意义的,它意味着该类不可以被实例化,只是给出了相关规则要求继承的子类都需要根据抽象类定义的方法去给出具体实现。

    抽象类和类的异同:

    • 抽象类在类的基础上新增了抽象方法,需要用abstract修饰。在类的组成上其他方面和类相似,可以拥有成员变量,普通的方法;
    • 抽象类中的抽象方法必须定义为public或protected,因为抽象方法是一定要被子类继承的;
    • 抽象类不可以被实例化,只能由其子类实例化;
    • 如果一个普通类继承自抽象类,则该类必须实现抽象类中的抽象方法。如果子类没有实现抽象类的抽象方法,则该子类也必须定义为抽象类。

    接口:
    接口在抽象类的基础上规则演化得更加严格,接口中只能有抽象方法,且没有成员变量,变量都需要声明为:public static final。接口中没有实现,只给出了声明。
    抽象类的规范介于类和接口之间,即能有具体的实现,也有接口的抽象。

    接口个抽象类异同:

    • 接口可以被实现——implements,抽象类可以被继承——extends;
    • 抽象类可以有构造方法而接口不可以有构造方法;
    • 接口中变量的声明只能为:public static final;
    • 一个类只能继承一个抽象类,而一个类可以实现多个接口;
    • 抽象类中可以有普通方法,接口中只能有抽象方法,不能给出方法的具体实现。

    相关文章

      网友评论

          本文标题:Java中类,抽象类,接口的异同

          本文链接:https://www.haomeiwen.com/subject/rhwyuqtx.html