接口和抽象类的区别

抽象类   abstract

        抽象类 = 普通方法 + 抽象方法

  1. 抽象类是类
  2. 多了抽象的方法,类也必须是抽象类。
  3. 抽象方法没有方法体
  4. 抽象类不能实例化,不能创建对象
  5. 抽象类必须有子类,来实现所有的抽象方法
  6. 如果子类没有实现所有的抽象方法,那么子类也是抽象类
  7. 仍旧使用满足多态的特性,所以方法和参数也会使用抽象父类的引用。

在开发过程中,对于有些方法一定要实现,则会把此方法在父类中声明为抽象方法,对于有些方法不一定实现,在抽象父类中声明成普通的方法,子类可以选择性的对父类的普通方法进行重写来完成相应的逻辑。

总结抽象类的限制:

  1.  抽象类不能使用final关键字,因为final关键字修饰类,不存在子类。
  2.  抽象类虽然不能实例化,但是可以像普通类一样,拥有属性和构造方法,子类可以通过父类的构造方法来完成子类自己的构造。

 


接口(重中之重)  interface

   

接口是抽象的抽象

抽象类的不足:

  1. 类 单继承 单一
  2. 类中既有普通方法也有抽象方法,杂乱

由于抽象类的不足,出现了接口。接口可以解决以上问题

接口特性:

  1. 接口不是类,但是存在.java文件中,编译之后也会生出.class文件。
  2. 在接口内部只能定义抽象方法,方法通常只写返回类型和方法名,可以省略public abstract
  3. 接口中只存在常量,默认是有public final修饰,可省略。常量名都用大写字母。
  4. 接口不能实例化。
  5. 如果使用结构,就要实现接口中的所有抽象方法
  6. 定义了某种功能
  7. 接口定义了某种功能
  8. 接口感觉上实现了类的多继承
  9. 接口也属于功能上的延伸
  10. 接口貌似是具体类的父类,可以实现类的向上转型(把具体类的对象赋给了接口的引用)
  11. 接口可以实现多继承,具体的类可以实现多个接口
  12. jdk1.8开始,接口中也可以实现普通方法,为了实现函数式编程(了解)
  13. 依照类的多态特性,如果方法的参数为接口的引用,传递的就是实现接口的类。如果是类的引用,传递的就是子类对象。
  14. 先继承父类后实现接口。

接口和抽象类的区别(面试考点)

  1. 接口不是类。
  2. 在抽象方法里面既能定义抽象方法,又能定义普通方法,但是在接口中,只能定义抽象方法
  3. 抽象类只能实现单继承,接口可以实现多继承
  4. 抽象方法必须有子类,接口不是必须的
  5. 抽象类可以定义属性,但是在接口中只能定义常量。

 

普通类  抽象类   接口   关系

  1. 普通类继承普通类,也继承抽象类,实现接口。
  2. 抽象类继承普通类,也继承抽象类,实现接口
  3. 接口只能继承接口

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值