谈谈Java接口和以及它和抽象类的区别

文章目录

    • 抽象类以及应用
    • 谈谈接口
      • 接口的定义与使用
      • 接口的使用限制
      • 接口的应用
    • 抽象类与接⼝的区别
    • 个人感想

抽象类以及应用

具体的这篇文章里有提及:传送门

谈谈接口

接口的定义与使用

  • 接⼝定义:接⼝就是抽象⽅法和全局常量的集合,在Java中接⼝使⽤interface关键字定义

  • 定义一个接口:

interface IMessage{
public static final String MSG = "I am a boy" ; // 全局常量
public abstract void print() ; // 抽象⽅法
}
  • ⼦类如果要想使⽤接⼝,那么就必须使⽤implements关键字来实现接⼝,同时,⼀个⼦类可以实现多个接⼝(可以使⽤接⼝来实现多继承的概念),对于接⼝的⼦类(不是抽象类)必须覆写接⼝中的全部抽象⽅法。随后可以利⽤⼦类的向上转型通过实例化⼦类来得到接⼝的实例化对象。

接口的使用限制

  • 接⼝中只允许public权限。(不管是属性还是⽅法,其权限都是public)
    谈谈Java接口和以及它和抽象类的区别_第1张图片
  • 阿⾥编码规约:接⼝中的⽅法和属性不要加任何修饰符号,public也不要加,保持代码的简洁性,比如下边的代码:
    谈谈Java接口和以及它和抽象类的区别_第2张图片
  • 当⼀个⼦类即需要实现接⼝⼜需要继承抽象类时,请先使⽤extends继承⼀个抽象类,⽽后使⽤
    implements实现多个接⼝。
    谈谈Java接口和以及它和抽象类的区别_第3张图片
  • ⼀个抽象类可以使⽤implements实现多个接⼝,但是接⼝不能继承抽象类。
    谈谈Java接口和以及它和抽象类的区别_第4张图片
  • ⼀个接⼝可以使⽤extends继承多个⽗接⼝(类不能多继承,但是接口可以)。
    谈谈Java接口和以及它和抽象类的区别_第5张图片
  • 接⼝可以定义⼀系列的内部结构,包括:内部普通类,内部普通类,内部接⼝。其中,使⽤static定义的内部接⼝就相当于⼀个外部接⼝。
	//使⽤static定义的内部接⼝
	interface A {
		public void printA() ;
		static interface B {
		public void printB() ; // 使⽤static定义,描述⼀个外部接⼝
	}
}
	class Impl implements A.B {
	public void printB() {}
}

接口的应用

接⼝在实际开发之中有三⼤核⼼应⽤环境:

  • 定义操作标准
  • 表示能⼒
  • 在分布式开发之中暴露远程服务⽅法

接⼝和对象多态性的概念结合之后,对于参数的统⼀更加明确了。⽽且可以发现接⼝是在类之上的设计抽象。

抽象类与接⼝的区别

谈谈Java接口和以及它和抽象类的区别_第6张图片
除了单继承的局限之外,实际上使⽤抽象类和接⼝都是类似的。在实际开发中,抽象类的设计⽐接⼝复杂。

个人感想

  1. 接⼝是Java的核⼼,慢慢会学到接⼝更多的使⽤与设计。
  2. 开发之中优先考虑接⼝,以避免单继承局限。
  3. 抽象类是模板,有层次感。
  4. 接⼝则更关⼼⾏为与混合。

你可能感兴趣的:(面试常问,Java)