zoukankan      html  css  js  c++  java
  • 抽象类与接口的区别

    抽象类与接口的异同:

    1、在抽象类中可以为部分方法提供默认的实现;接口中只能包含抽象方法;抽象类也是一种类,定义的时候比如 public abstract class{}  来定义;接口是一种特殊的类,interface(接口)必须靠类来实现(implements);

    2、向抽象类中添加一个具体的方法,不会对它的子类造成影响;而对于接口一旦公布就不应被改变。抽象类的子类如果不是抽象类的话,必须实现抽象类的抽象方法,有一点必须记住,一个类里面如果有抽象的方法,那么这个类就一定是抽象类,  如果一个类是抽象的类的话,他里面的方法可以是抽象的,也可以实现,还可以全部都实现;
    3、一个类只能继承一个直接的父类,这个父类可能是抽象类;但一个类可以实现多个接口。
    4、接口的数据成员是公有常量(public static final),方法默认都是public abstract类型;抽象类的数据成员可以是任意的,抽象方法不能用private修饰,也不能加final。

    通俗的说法:

    接口是只定义了我们人类应该能做什么,但没有说明该怎样做。

    抽象类是,我只能说明我会的一部分,不会的请子孙来完成。。。

    接口和抽象类都是不能生成实例的;都拥有抽象方法;接口中全部是抽象方法,抽象类中可以有非抽象方法;接口中所有属性都是静态常量,抽象类中可以有任何类型属性;抽象类可以有构造器,接口中除了抽象方法什么都没有;一个接口可以继承多个接口,抽象类只能继承一个父类;抽象类可以实现接口的。

    ***接口引用完全可以看做是类引用--但是接口引用的强大之处在于,它可以引用任何实现该接口的类。

  • 相关阅读:
    [LeetCode] 769. Max Chunks To Make Sorted
    [LeetCode] 563. Binary Tree Tilt
    [LeetCode] 1802. Maximum Value at a Given Index in a Bounded Array
    [LeetCode] 1198. Find Smallest Common Element in All Rows
    [LeetCode] 370. Range Addition
    [LeetCode] 1749. Maximum Absolute Sum of Any Subarray
    [LeetCode] 1801. Number of Orders in the Backlog
    [LeetCode] 869. Reordered Power of 2
    [LeetCode] 841. Keys and Rooms
    [LeetCode] 1603. Design Parking System
  • 原文地址:https://www.cnblogs.com/ratooner/p/1673804.html
Copyright © 2011-2022 走看看