Java面向对象——接口(下)

本文详细探讨了Java中的接口概念,包括类与接口、接口与接口的关系,特别是多实现和多继承的特点。同时介绍了标记接口的概念,作为赋予类特定权限的手段。
摘要由CSDN通过智能技术生成

接口(上)学习:https://blog.csdn.net/hewenqing1/article/details/103547259

 

三、类与类,类与接口以及接口与接口的关系

  • 类与类
继承关系,只能单继承,但是可以多层继承(略,参照前面的继承)
  • 类与接口
实现关系,可以单实现,也可以多实现。还可以在继承一个类的同时实现多个接口
  • 接口与接口
继承关系,可以单继承,也可以多继承

 

1、类与接口:实现关系,可以单实现,也可以多实现。并且还可以在继承一个类的同时实现多个接口。

一个类只能继承一个类,但是能实现多个接口。代码测试如下:

//定义接口:Father
interface Father {
	public abstract void show();
}
//定义接口:Mother
interface Mother {
	public abstract void show2();
}

//接口的实现
//class Son implements Father,Mother //多实现  (默认是extends Object )
class Son extends Object implements Father,Mother {	
	public void show() {	//方法重写
		System.out.println("show son");
	}
	
	public void show2() {
		System.out.println("show2 son");
	}
}

class InterfaceDemo3 {
	public static void main(String[] args) {
		
	}
}

代码改进如下,注意,调用方法时只能是调用对应的接口中的方法

//定义接口:Father
interface Father {
	public abstract void show();
}
//定义接口:Mother
interface Mother {
	public abstract void show2();
}

//接口的实现
class Son extends Object implements Father,Mother {	
	public void show() {	//方法重写
		System.out.println("show son");
	}
	
	public void show2() {
		System.out.println("show2 son");
	}
}

class InterfaceDemo3 {
	public static void main(String[] args) {
		//创建对象
		Father f = new Son();
		f.show();	//调用对应的接口中的方法
		//f.show2(); //报错
	
		Mother m = new Son();
		//m.show(); //报错
		m.show2();
	}
}

2、接口与接口: 继承关系,可以单继承,也可以多继承。一个接口能继承另一个接口,这和类之间的继承比较相似。测试代码如下,不会报错,其中测试类省略,所以说接口可以单继承和多继承。

//定义接口:Father
interface Father {
	public abstract void show();
}
//定义接口:Mother
interface Mother {
	public abstract void show2();
}

//接口单继承
//interface Sister extends Father {}
//接口多继承
interface Sister extends Father,Mother {

}

一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。

public interface Sports
{
   public void setHomeTeam(String name);
   public void setVisitingTeam(String name);
}
 
public interface Football extends Sports
{
   public void homeTeamScored(int points);
   public void visitingTeamScored(int points);
   public void endOfQuarter(int quarter);
}
 
public interface Hockey extends Sports
{
   public void homeGoalScored();
   public void visitingGoalScored();
   public void endOfPeriod(int period);
   public void overtimePeriod(int ot);
}

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

在接口的多继承中extends关键字只需要使用一次,在其后跟着继承接口。 如下所示:

public interface Hockey extends Sports, Event

以上的程序片段是合法定义的子接口,与类不同的是,接口允许多继承,而 Sports及 Event 可能定义或是继承相同的方法

四、标记接口(来自网络解释,懵懂略)

最常用的继承接口是没有包含任何方法的接口。

标记接口是没有任何方法和属性的接口.它仅仅表明它的类属于一个特定的类型,供其他代码来测试允许做一些事情。

标记接口作用:简单形象的说就是给某个对象打个标(盖个戳),使对象拥有某个或某些特权。

例如:java.awt.event 包中的 MouseListener 接口继承的 java.util.EventListener 接口定义如下:

package java.util; 
public interface EventListener {}

没有任何方法的接口被称为标记接口。标记接口主要用于以下两种目的:

  • 建立一个公共的父接口:

    正如EventListener接口,这是由几十个其他接口扩展的Java API,你可以使用一个标记接口来建立一组接口的父接口。例如:当一个接口继承了EventListener接口,Java虚拟机(JVM)就知道该接口将要被用于一个事件的代理方案。

  • 向一个类添加数据类型:

    这种情况是标记接口最初的目的,实现标记接口的类不需要定义任何接口方法(因为标记接口根本就没有方法),但是该类通过多态性变成一个接口类型。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值