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

    接口和抽象类的共同特征如下:

      接口和抽象类都不能被实例化,位于继承树的顶端,用于被其他类实现和继承。

      接口和抽象类都可以包含抽象的方法,实现接口的类或者继承抽象类的类都必须实现这些抽象的方法。

    区别:二者的主要区别在于他们存在的目的不同,即设计的目的不同。

      接口作为系统与外界交互的窗口,接口体现的是一种规范。

      抽象类作为系统中多个子类的共同父类,抽象类体现的是一种模板式设计。

    我们最关注的还是二者用法的区别:

    (1)接口里只能包含抽象方法和默认方法,不能实现普通方法。抽象类完全可以包含普通方法。

      默认方法如下所示:

    public interface A {
        default   void foo(){
           System.out.println("Calling A.foo()");
        }
    }
      
    public class Clazz implements A {
    }
    即使Clazz类并没有实现foo()方法。在接口A中提供了foo()方法的默认实现。
    这就是默认方法

    (2)接口里不能定义静态方法;抽象类中可以。

    (3)接口里只能定义静态变量,不能定义普通变量;抽象类即能定义静态变量又能定义普通变量。

    (4)接口里不含构造器;抽象类中可以含有构造器。但不是用来创建对象的,而是让子类调用该构造器来完成抽象类的初始化的。

    (5)接口里不能含有初始化块;但是抽象类中可以有初始化块。

    (6)类是单继承,包括抽象类;但是接口的实现可以是多个,补充了java单继承的不足!

  • 相关阅读:
    swift NSComparator
    Java mac 上编写Java代码
    四舍五入、上取整、下取整
    数组排序
    删除xcode 里的多余证书
    启动画面 设置
    CGFloat Float 互转
    navigationController pop的几种方法
    iOS 获取键盘相关信息
    eclipse代码格式化
  • 原文地址:https://www.cnblogs.com/lixiaolun/p/4319034.html
Copyright © 2011-2022 走看看