java之接口:interface

接口的引入:

比如抽象类中都是抽象方法,

abstract class AbsDemo
{
    abstract void show1();
    abstract void show2();
}

当一个抽象类的方法都是抽象类的时候,这时可以将抽象类用另外一种形式定义和表示,就是接口 interface。

定义接口的关键字不是class,而是interface。

对于接口当中常见的成员:而且这些成员都有固定的修饰符,

1、全局常量  public static final

2、抽象方法  public abstract

interface Demo   //编译后还是Demo.class文件
{
	public static final int NUM = 4;
	int num = 4;  //如果前面没有加public static final修饰,系统会默认加上	
	public abstract void show1();
	public abstract void show2();
	void show();  //如果前面没有加public static final修饰,系统会默认加上
}

接口的实现:

类与类之间是继承关系,类与接口之间是实现关系。

接口不可以实例化,只能由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化。否则,这个子类就是一个抽象类。

interface Demo
{
	public static final int NUM = 4;
	public abstract void show1();
	public abstract void show2();
}

class DemoImp implements Demo
{
	public void show1()
	{
		
	}
	public void show2()
	{
		
	}
}

接口的多实现:

在java中不直接支持多继承,因为会出现调用的不确定性。所以java将多继承机制进行改良,在java中变成了多实现。

一个类可以实现多个接口。

interface A
{
	public void show();
}
interface B
{
	public void show();
}

class TestImp implements A,B //多实现
{
	public void show() //这个相当于实现了A和B接口的show()
	{
		
	}
}

interface A
{
	public void show1();
}
interface B
{
	public void show();
}

class TestImp implements A,B //多实现
{
	public void show1() //这个相当于实现了A和B接口的show()
	{
		
	}
	public void show()
	{
		
	}
}
interface A
{
	public void show1();
}
interface B
{
	public void show();
}

class TestImp implements A,B //需要全部实现A和B中的函数
{
	public void show1() 
	{
		
	}
	public void show()
	{
		
	}
}


一个类在继承另一个类的同时,还可以实现多个接口。

interface A
{
	public void show1();
}
interface B
{
	public void show();
}
class Q
{
	public void method(){}
}
class TestImp extends Q implements A,B //需要全部实现A和B中的函数
{
	public void show1() 
	{
		
	}
	public void show()
	{
		
	}
}
接口的出现避免了单继承的局限性。

接口的细节:

类与类之间用继承extends

类与接口之间用实现implements

接口与接口之间可以是继承关系,而且接口可以多继承。原理是接口没有方法体,避免了多继承的不确定性。

interface C
{
	void show();
}
interface D
{
	void method();
}
interface InterfaceMutiExtends extends C,D
{
	void function();
}
class newDemo implements InterfaceMutiExtends
{
	//需要覆盖3个方法
	public void show(){}
	public void method(){}
	public void function(){}
}

接口的特点:

接口是对外暴露的规则。

接口是程序的功能拓展

接口的出现降低耦合性。

接口可以用来多实现。

类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。

接口与接口之间可以有继承关系。

比如笔记本的USB口就是接口的设计理念。

接口的应用:

interface USB
{
	public void open();
	public void close();
}

//U盘和鼠标这些设备和电脑的耦合性降低了。
//U盘
class UPan implements USB
{
	public void open()
	{
		System.out.println("UPan open");
	}
	public void close()
	{
		System.out.println("UPan close");
	}
}
//鼠标
class UMouse implements USB
{
	public void open()
	{
		System.out.println("UMouse open");
	}
	public void close()
	{
		System.out.println("UMouse close");
	}
} 

class BookPC
{
	public static void main(String[] arg)
	{
		useUSB(new UPan());
		useUSB(new UMouse());
	}
	//使用规则
	public static void useUSB(USB u)  //接口类型的引用,用于接收(指向)接口的子类对象
	{
		u.open();
		u.close();
	}
}
输出:


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值