接口和抽象类的区别

抽象类   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. 接口只能继承接口

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值