【ThinkingInJava】10、接口使用

Note.java 一个枚举类

package Lesson8Polymorphism.music;

public enum Note
{
	MIDDLE_C, C_SHARP, B_FLAT;
}

music5.java

/**
* 书本:《Thinking In Java》
* 功能:接口
* 文件:Music.java
* 时间:2015年4月2日16:50:48
* 作者:cutter_point
*/
package Lesson9Interfaces.music5;

import java.util.Scanner;

import Lesson8Polymorphism.music.Note;
import static net.mindview.util.Print.*;

interface Instrument
{
	int VALUES = 5; 	//默认是static和final的
	void paly(Note n);	//这里不能对方法进行实现
	void adjust();
}

class Wind implements Instrument	//必须实现接口的所有方法
{

	@Override
	public void paly(Note n)
	{
		print(this + ".play() " + n);
	}

	@Override
	public void adjust()
	{
		print(this + ".adjust()");
	}

	public String toString()
	{
		return "Wind()";
	}

}

class Percussion implements Instrument
{

	@Override
	public void paly(Note n)
	{
		print(this + ".play() " + n);
	}

	@Override
	public void adjust()
	{
		print(this + ".adjust()");
	}

	public String toString()
	{
		return "Percussion()";
	}

}

class Stringed implements Instrument
{
	@Override
	public void paly(Note n)
	{
		print(this + ".play() " + n);
	}

	@Override
	public void adjust()
	{
		print(this + ".adjust()");
	}

	public String toString()
	{
		return "Stringed()";
	}

}

class Brass extends Wind
{
	public String toString()
	{
		return "Brass";
	}
}

class Woodwind extends Wind
{
	public String toString()
	{
		return "Woodwind";
	}
}

public class Music5
{
	static void tune(Instrument i)
	{
		i.paly(Note.MIDDLE_C); 			//MIDDLE_C, C_SHARP, B_FLAT;
	}

	static void tuneAll(Instrument[] e)
	{
		//一个个取出来调用tune函数
		for(Instrument i : e)
		{
			tune(i);
		}
	}

	public static void main(String [] args)
	{
//		Scanner s = new Scanner(System.in);
//		System.out.println(s.next());

		Instrument[] orchestra =
			{
				new Wind(),
				new Percussion(),
				new Stringed(),
				new Brass(),
				new Woodwind()
			};

		tuneAll(orchestra);
	}
}

输出结果:

Wind().play() MIDDLE_C  obj1

Percussion().play() MIDDLE_C  obj1

Stringed().play() MIDDLE_C  obj1

Brass.play() MIDDLE_C  obj1

Woodwind.play() MIDDLE_C  obj1

时间: 2025-01-13 17:04:40

【ThinkingInJava】10、接口使用的相关文章

Java基础10 接口的继承与抽象类(转载)

接口继承 接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型.比如,我们以Cup作为原interface: interface Cup{    void addWater(int w);    void drinkWater(int w);} 我们在继承Cup的基础上,定义一个新的有刻度的杯子的接口,MetricCup 接口如下: interface MetricCup extends Cup{    int WaterContent

java Vamei快速教程10 接口的继承和抽象类

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在实施接口中,我们利用interface语法,将interface从类定义中独立出来,构成一个主体.interface为类提供了接口规范. 在继承中,我们为了提高程序的可复用性,引入的继承机制.当时的继承是基于类的.interface接口同样可以继承,以拓展原interface. 接口继承 接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,

java(10)接口抽象类

package a; public interface aaa { public int getMax(); String getMes(); } package a; import static java.lang.System.out; public class test implements aaa { public int getMax() { int i = 123; return i; } public String getMes() { String s ="实现接口里的方法&qu

Java基础10 接口的继承与抽象类

链接地址:http://www.cnblogs.com/vamei/archive/2013/03/31/2982240.html 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在实施接口中,我们利用interface语法,将interface从类定义中独立出来,构成一个主体.interface为类提供了接口规范. 在继承中,我们为了提高程序的可复用性,引入的继承机制.当时的继承是基于类的.interface接口同样可以继承

调用WebService接口返回字符串

1 Service service = new Service(); 2 Call call = (Call) service.createCall(); 3 call.setTargetEndpointAddress(this.endPoint); 4 call.setOperationName(new QName(this.defaultNameSpace,this.interfaceMethodName)); 5 call.setSOAPActionURI(this.defaultName

[1.30] 保持的力量:接口开发最佳实践

神啊,求你赐给我平静的心,去接受我无法改变的事:赐给我勇气,去做我能改变的事:赐给我智慧,去分辨两者的不同. --平静之祷 1.30.1 论保持的力量 追到一个心仪的女生不难,难于如何保持和培养一份真挚的感情:获得一时的财富也不难,难于如何长久保持收益:创业的公司很容易博得一时媒体的关注以及某次天使的投资,但难于如何排除各种障碍.充分利用各方资源发展成中企业及至上市公司. 同样,提供一时的接口很容易,但当我们需要不断为接口提供升级,以及当我们维护提供一整套接口时,面临的困难和问题会越来越大.所以

【转 】C#中的接口实现多态

C#中的接口实现多态 我们都知道虚方法实现多态,抽象方法实现多态等,我们今天来看看如何使用接口实现多态 1.首先我们先要来了解了解什么是接口,它存在的意识 01.接口就是为了约束方法的格式(参数和返回值类型)而存在的 02.接口可以实现多继承,弥补单继承的缺陷.  03.接口可以看成是一个特殊的抽象类,通过反编译看源码可知 04.接口中方法不用访问修饰符,因为CLR会自动添加,并且不能有方法体 05.如果一个类实现了某个接口,就得实现该接口中所有的方法 06.接口要谨慎使用,防止出现接口污染!

JavaScript设计模式-5.接口

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>javascript高级语法5-接口</title> 6 </head> 7 <body> 8 <script> 9 /* 10 * 接口: 11 * 1.注解的方法 12 * 最简单,功能最弱,利用interface和implement&q

C#中的接口实现多态

我们都知道虚方法实现多态,抽象方法实现多态等,我们今天来看看如何使用接口实现多态 1.首先我们先要来了解了解什么是接口,它存在的意识 01.接口就是为了约束方法的格式(参数和返回值类型)而存在的 02.接口可以实现多继承,弥补单继承的缺陷.  03.接口可以看成是一个特殊的抽象类,通过反编译看源码可知 04.接口中方法不用访问修饰符,因为CLR会自动添加,并且不能有方法体 05.如果一个类实现了某个接口,就得实现该接口中所有的方法 06.接口要谨慎使用,防止出现接口污染! 07.接口仅仅代表一种

我的java学习笔记(15)关于接口

1.接口技术主要用来描述具有什么功能,而并不给出每个功能的具体实现. 2.一个类可以实现一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象. 3.在java程序设计语言中,接口不是类,而是对类的一组需求描述,这些类的需求要遵从接口描述的统一格式进行定义. 4.接口中的所有方法自动的属于public. 5.接口决不能含有实例域,也不能在接口中实现方法. 6.提供实例域和方法实现的任务应该由实现接口的那个类来完成. 7.可以将接口看成是没有实例域的抽象类.但是这两个概念还是有区别的.