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

    接口

    1 因为java不支持多重继承,所以有了接口,一个类只能继承一个父类,但可以实现多个接口,接口本身也可以继承多个接口。

    2 接口里面的成员变量默认都是public static final类型的。必须被显示的初始化。

    3 接口里面的方法默认都是public abstract类型的。隐式声明。

    4 接口没有构造方法,不能被实例化。

    5 接口不能实现另一个接口,但可以继承多个接口。

    6 类如果实现了一个接口,那么必须实现接口里面的所有抽象方法,否则类要被定义为抽象类。

     

    抽象类

    1 如果将一个类声明为abstract,此类不能生成对象,只能被继承使用。 

    2  抽象方法必须存在于抽象类中。

    3  抽象类中可以有一般的变量和一般的方法。

    4 子类继承抽象类必须实现其中抽象方法,除非子类为抽象类。 
       private void print(){};此语句表示方法的空实现。 
       abstract void print(); 此语句表示方法的抽象,无实现。

    Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:

    • 接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
    • 类可以实现很多个接口,但是只能继承一个抽象类
    • 类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
    • 抽象类可以在不提供接口方法实现的情况下实现接口。
    • Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
    • Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。
    • 接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。
  • 相关阅读:
    LeetCode120 Triangle
    LeetCode119 Pascal's Triangle II
    LeetCode118 Pascal's Triangle
    LeetCode115 Distinct Subsequences
    LeetCode114 Flatten Binary Tree to Linked List
    LeetCode113 Path Sum II
    LeetCode112 Path Sum
    LeetCode111 Minimum Depth of Binary Tree
    Windows下搭建PHP开发环境-WEB服务器
    如何发布可用于azure的镜像文件
  • 原文地址:https://www.cnblogs.com/whf-Staring/p/4785007.html
Copyright © 2011-2022 走看看