码迷,mamicode.com
首页 > 编程语言 > 详细

从头认识java-7.2 接口

时间:2015-11-08 15:22:05      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:java

这一章节我们来讨论一下接口。

之前我们已经聊过抽象类,他已经进行了第一步的抽象,把某些方法抽象出来,然后在子类那里实现,但他不是完全抽象。

而接口,就是进一步抽象,它里面全是没有实现的方法,所以的方法都在实现类里面实现。

1.概念

接口:就像类与类之间的一种协议,只需要知道某个类实现的某个接口, 那么,他就可以通过调用接口里面的方法来指向这个类的实现。


2.特性

(1)使用interface标注

(2)完全抽象

(3)属性域必须是public final static(这个是编译器自动转换的)

(4)方法必须是public

(5)向上转型,为父类指向子类对象提供途径,同时也使得java拥有多态这个特性

(6)不可以实例化

interface Instrument {
	int id=0;
	void Play();
}


3.实例

package com.ray.ch07;

public class Test {
	public void tune(Instrument instrument) {
		instrument.Play();
	}

	public void tune(Instrument[] instruments) {
		for (int i = 0; i < instruments.length; i++) {
			tune(instruments[i]);
		}
	}

	public static void main(String[] args) {
		Test test = new Test();
		// Instrument instrument = new Instrument();//error
		Instrument wind = new Wind();
		Instrument bass = new Bass();
		Instrument[] instruments = { wind, bass };
		test.tune(instruments);
		System.out.println(Instrument.id);// id是static
	}
}

interface Instrument {
	// private int id=0;//error
	// private void Play();//error

	int id = 0;

	void Play();
}

class Wind implements Instrument {

	@Override
	public void Play() {
		// id=2;//The final field Instrument.id cannot be assigned
		System.out.println(id);
		System.out.println("wind play");
	}
}

class Bass implements Instrument {
	@Override
	public void Play() {
		System.out.println("bass play");
	}
}


输出:

0
wind play
bass play
0


从上面的代码可以看见:

1.接口是不可以new 的

2.子类必须实现接口的方法

3.通过向上转型,以Instrument为类型定义的wind和bass,也可以调用play方法,而且运行时自动识别应该绑定那个play方法

4.由于wind和bass必须重写play,因此play一定是public,因为wind和bass不是继承Instrument

5.我们通过打印Instrument里面的id,知道id一定是static,因为可以直接使用Instrument调用,而不需要new

6.通过在实现类wind里面修改id,就可以看到他的提示,提示id是final的。


总结:这一章节主要讨论了接口的概念、特性,以及举例来说明这些特性。


这一章节就到这里,谢谢。

-----------------------------------

目录



版权声明:本文为博主原创文章,未经博主允许不得转载。

从头认识java-7.2 接口

标签:java

原文地址:http://blog.csdn.net/raylee2007/article/details/49718149

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!