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

    在理解它们的区别之前,先了解他们的概念

    1 抽象类的理解

    2 接口的理解

    3 抽象与接口的区别

    4 什么时候使用抽象类与接口

    下面一步步解答

    1:对抽象类的理解

    (1)抽象必须有abstract关键字修饰,并且没有方法体。如果一个类中有抽象方法,则这个类称为抽象类,比如:

    public class  userDao(){

      public abstract register(); //这是一个抽象方法,只有方法名,没有方法体。

    }

    (2)抽象类不能被实例化。

    (3)当一个类是接口时(interface关键字修饰),里面有抽象方法,这个类也是抽象类,当另一个类实现这个接口抽象类时,必须全部实现全部的抽象方法。

    以Externalizable接口为例:
    
    public interface Externalizable{
     
        void writeExternal(ObjectOutput out) throws IOException;
     
        void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;
    }
    
    当你实现这个接口时,你就需要实现上面的两个方法:
    
    public class Employee implements Externalizable {
     
        int employeeId;
        String employeeName;
     
        @Override
        public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
            employeeId = in.readInt();
            employeeName = (String) in.readObject();
     
        }
     
        @Override
        public void writeExternal(ObjectOutput out) throws IOException {
     
            out.writeInt(employeeId);
            out.writeObject(employeeName);
        }
    }

    (3)可以用public ,protected,private修饰,如果不写,默认default,即public。如果用了private的抽象方法,则子类不能实现private的抽象方法。

    (4)如果一个类继承一个抽象类,但是又没有实现抽象类里面的抽象方法,那么这个类也必须为抽象类,用abstract修饰。

    2 对接口的理解

    (1)接口类是用interface修饰的。定义一个接口如下:

    public interface userDaoImpl{
    
    }
    

    (2) 接口里面可以定义成员变量,用public staic finall修饰,可以省略。但是不能用其它修饰,如private,protect。编译时会出错。

    (3)接口中的方法,全部必须是抽象方法。

    (4)一个类允许实现多个接口

    3  抽象与接口的区别

    (1)抽象可以有静态快或静态方法,而接口不允许有。

    (2)抽象的成员变量可以是各种类型,而接口的成员变量只能是public static finall.

    (3)一个类只能有继承一个抽象类,但是接口可以实现多个抽象类

    4 什么时候使用抽象类与接口

    (1)如果拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。

    (2)如果想多继承(一个类不能继承多个抽象类),就要用接口,接口可以实现(implement)多个抽象类。

  • 相关阅读:
    模板 无源汇上下界可行流 loj115
    ICPC2018JiaozuoE Resistors in Parallel 高精度 数论
    hdu 2255 奔小康赚大钱 最佳匹配 KM算法
    ICPC2018Beijing 现场赛D Frog and Portal 构造
    codeforce 1175E Minimal Segment Cover ST表 倍增思想
    ICPC2018Jiaozuo 现场赛H Can You Solve the Harder Problem? 后缀数组 树上差分 ST表 口胡题解
    luogu P1966 火柴排队 树状数组 逆序对 离散化
    luogu P1970 花匠 贪心
    luogu P1967 货车运输 最大生成树 倍增LCA
    luogu P1315 观光公交 贪心
  • 原文地址:https://www.cnblogs.com/qq1141100952com/p/9202536.html
Copyright © 2011-2022 走看看