Java学习笔记之 接口与抽象类的区别

在学习到这两个概念后,总感觉比较模糊,感觉这两个东西很像,所以在此做一个笔记

抽象类与接口的区别:

成员区别:

抽象类:抽象类中可以有变量、常量、抽象方法、非抽象方法和构造方法。(有抽象方法的类一定是抽象类,抽象类不一定有抽象方法)

public abstract class Animal{
    Animal(){                      //无参构造方法
    }

    Animal(int age){             //带参构造方法
        this.age = age;
    }

    public int age = 10;           //变量

    final private int height = 20; //常量

    public void setAge(int age){   //非抽象方法
        this.age = age;    
    }
    public void putHeight();       //抽象方法
}

接口:可以有常量和抽象方法。(变量的定义隐含final关键字的修饰)

public interface Person(){
    int age = 10;   //常量 (默认)隐含public static final 修饰

    void work();    //抽象方法 (默认)隐含public abstract 修饰
}

关系区别:

类与类:继承关系。单继承、多层继承。

public  class A extends B(){
    ...
)

类与接口:实现关系。单实现、多实现(一个类实现多个接口)。

public class A extends B implements C,D{ //单继承多实现
    ...
}

接口与接口:继承关系。单继承、多继承。

public  interface A extends B,C(){  //多继承
    ...
)

设计区别:

抽象类:对行为和属性进行抽象。

接口:侧重对行为进行抽象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值