抽象类和接口的区别

abstract  抽象的

  什么是抽象类:

  1) abstract关键字声明的类;

  2) 抽象方法只有方法的声明,没有方法的实现;

  3)只有抽象类中,才可以定义抽象方法。

  4) 抽象类不能 new ,只能new它的子类(必须实现(重写)所有抽象方法);

  5) 抽象类中可以没有抽象方法, 含有抽象方法的类肯定是抽象类;

  6)如果一个类继承了含有抽象方法的抽象类,那么必须实现(重写)抽象方法。

  7) 抽象类中可以有普通成员(属性,普通函数,构造函数,静态成员),实际上抽象类除了可以有抽象方法之外,和普通类一模一样。


什么是接口:  如果一个抽象类中的所有方法都是抽象方法,则可以用接口表示,严格的说,接口就是特殊的抽象类。
  
  特点:
       1) 接口中所有的方法都是抽象的,默认 public  abstract 修饰。  可不写,系统默认。
       2) 接口中不可以有普通方法。
       3) jdk1.8 新特性,可以在接口中定义默认方法,并且默认方法不用在实现类中实现,可以直接使用。
                default void test(){
                    System.out.println("这个是默认的方法");
                }
        4) 接口可以继承接口,使用关键字extends
        5) 如果一个非抽象类实现接口,则必须实现接口中的所有方法;抽象类实现(implements)接口,可以不去实现接口中的抽象方法。
        6) 普通的类实现接口使用关键字:implements
        7) 默认方法也可以被重写  
        8) 接口中的属性都是  public  static  final 。 可以不写,系统默认
        9) java中不支持多继承,但是支持多实现。一个类可以实现多个接口,被实现的多个接口之间用多个逗号隔开。
      10) 一个类在继承另一个类的同时还可以实现接口,extends关键字必须位于implements关键字之前。

说完了区别,那你知不知它们的相同点呢?别以为面试只问区别不问相同点哦。。

接口与抽象类的相同点: 
       1. 都不能被实例化。 
       2. 都能包含抽象方法。 

抽象类与接口紧密相关。然接口又比抽象类更抽象,这主要体现在它们的差别上:

1)类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。

2)抽象类当中可以存在非抽象的方法,可接口不能且它里面的方法只是一个声名必须用public来修饰没有具体实现的方法。

3)抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static fainl)。4)这一点也是最重要的一点本质的一点"抽象类是对象的抽象,然接口是一种行为规范"。 

例如每个接口可以代表一种最顶层的抽象,可以理解为代表一类东西,如果一个类实现了多个接口,那这个类就有了多种类型,即接口是定义混合类型的理想工具最后:有一种设计模式,就是,默认适配模式,意思就是说,首先定义一个接口,通过抽象类实现这个接口,并实现一些子类不需要一定实现的方法,然后,子类就可以选择是继承接口,实现所有方法,还是直接继承这个抽象类实现具体需要的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值