JAVA基础------接口

首先先介绍一下接口技术:接口技术主要用来描述类具有什么功能,而并不给出类中功能的具体实现。

 

一、接口的概念

在 《 JAVA 核心技术 卷一》中对接口有这样的描述:在 JAVA 程序设计语言中,接口不是类,而是对类的一组需求的描述,而这些类要遵从接口描述的同一格式进行定义。

也就是说,接口并不是一个类,但是如果想实现接口中的方法,就要符合接口的要求。所以可以知道,接口中的方法都是抽象方法,想要实现它的类必须重写这些抽象方法才可以。

 

二、接口的定义

定义一个接口,要使用 interface 关键字,而且其中的方法必须是抽象方法,定义方法时默认是公有的(public关键字可以省略),而且abstract关键字要省略。

interface USB
{

    public void work();  //定义接口中的方法

}

而在JDK1.8之后添加了default方法和static方法。

先来看default方法。default修饰的默认方法可以有方法体,而且可以不用在实现接口的类中重写。如果重写,则调用实现类中重写的方法。

interface A
{

	String saySomething();
	default String sayHello() {
	
		return "just say hello";

	}
}

class B implements A{

	public String saySomething() {
	
		return "i just wanna say something.";

	}

}

public class TestDemo02 
{
	public static void main(String[] args) 
	{
		A a = new B();
		System.out.println(a.saySomething());
		System.out.println(a.sayHello());
	}
}

运行之后的输出结果是:

i just wanna say something.

just say hello

 

再来看static修饰的方法。static修饰的方法也可以在接口中拥有方法体,在调用时像普通静态方法一样使用类名调用即可:

interface A
{

	String saySomething();
	static String sayHello() {
	
		return "just say hello";

	}
}

class B implements A{

	public String saySomething() {
	
		return "i just wanna say something.";

	}

}

public class TestDemo02 
{
	public static void main(String[] args) 
	{
		A a = new B();
		System.out.println(a.saySomething());
		System.out.println(A.sayHello());
	}
}

输出结果依旧是:

i just wanna say something.

just say hello

 

但是要注意的一点是,如果一个类实现了两个接口,而两个接口中有同名的default方法,则会编译错误。

 

三、接口的使用

从上面的代码中已经可以看到,如果一个类想要实现一个接口,要使用关键字 implements 。在实现接口的类的实例化上,也遵循多态这一特性,格式如: 接口名 变量名 = new 类名();

interface USB  
{

	//1 USB接口定义标准

	// 初始化工作

	public void install();

	// 工作开始

	public void work();
	
}


class Phone implements USB
{
		// 初始化工作

	public void install(){
	
		System.out.println("手机开始初始化");
	}


	// 工作开始

	public void work(){
	
		System.out.println("手机开始传输数据");
	}
}


class Print implements USB
{
		// 初始化工作

	public void install(){
	
		System.out.println("打印机开始初始化");
	}


	// 工作开始

	public void work(){
		System.out.println("打印机开始打印");
	}
}

class Computer
{
	
	public void plugin(USB u){  //向上转型 接收实现类
	
		u.install();

                u.work();
	}
}

public class IntDemo
{
	public static void main(String[]args){
	
		Computer p=new Computer();

		p.plugin(new Print());

	}
}

 

四、接口与抽象类的比较

  抽象类接口
1定义absractinterface
2组成普通方法,抽象方法,构造方法,普通属性抽象方法,全局常量,默认方法,静态方法
3访问权限全部jdk1.8默认是default,可以定义为public
4关系一个类只能继承一个抽象类一个类可以实现多个接口
5使用extendsimplements
6特殊点 一个接口可以继承多个接口

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值