java:面向对象-接口(interface)

如何产生的

在抽象类的基础之上又做了进一步的规定。
我们知道抽象类中可以有普通方法和抽象方法,那么如果一个抽象类中只有抽象方法和常量,则可以定义为接口。

接口是特殊的抽象类。

定义接口

interface 接口名 {
    
    
	常量;
	抽象方法;
}

接口中默认定义的都是常量,也就是

public static final int x = 5;int x = 5;

接口中默认定义的方法都是抽象方法,

public abstract a ();
同
a ();

接口中没有构造方法,不能实例化方法。

实现接口

实现接口的类称为实现类,实现类必须实现接口中所有方法,切必须用public 修饰

class 类名 implements 接口名 {
    
    
	
}

特性

  • 一个类可以实现多个接口,多个接口逗号隔开
  • jdk8以上:修饰接口中的方法增加 default,可以有方法体,实现类不强制实现此方法。
interface 接口名 {
    
    
	public default f () {
    
    
		
	}
}

出现这个的原因?
比如定义一个接口里面有好多方法,如果我们的实现类只想实现其中一种方法,那么也得写上其他没有用到的方法,这样不太友好。所以增加了这个,

继承

一个接口能继承另一个接口,和类之间的继承方式比较相似。

// 文件名: Sports.java
public interface Sports
{
    
    
   public void setHomeTeam(String name);
   public void setVisitingTeam(String name);
}
 
// 文件名: Football.java
public interface Football extends Sports
{
    
    
   public void homeTeamScored(int points);
   public void visitingTeamScored(int points);
   public void endOfQuarter(int quarter);
}

多继承:
在Java中,类的多继承是不合法,但接口允许多继承。

public interface Hockey extends Sports, Event

作用

  • 间接的实现了多继承(java类不支持多继承)
  • 通过接口定义规范和标准
  • 将标准的制定和实现分开

建议面向接口编程,提高扩展性

接口和抽象类的比较

相同点:

  • 都不能实例化
  • 都可以包含抽象方法

不同点:

  • 接口中只有静态常量,抽象类中可以有普通成员变量。
  • 接口中只有抽象方法,抽象类中可以有非抽象方法(使用 default 修饰)
  • 接口中不包含构造方法,抽象类中可以有构造方法
  • 接口中支持多继承,抽象类不支持多继承

猜你喜欢

转载自blog.csdn.net/weixin_43972437/article/details/113837425