java 接口(interface)的应用详解

版权声明:尊重原创,码字不易,转载需博主同意。 https://blog.csdn.net/qq_34626097/article/details/83476698

1.java 接口(interface)

  1. 接口(interface)是与类并行的一个概念
  2. 接口的主要用途就是被实现类实现。(面向接口编程)

2.java 接口(interface)使用的知识点

  1. 接口可以看做是一个特殊的抽象类。是常量与抽象方法的一个集合,不能包含变量、一般的方法;
  2. 接口是没有构造器的。
  3. 接口定义的就是一种功能,这个功能可以是被类所实现(implements)
    如:class CC extends DD implements A
  4. 实现接口的类,必须重写其中的所有的抽象方法,方可实例化,若没有重写所有的抽象方法,则此类仍为抽象类
  5. 类可以实现多个接口。 -----java 中类的继承是单继承的
  6. 接口与接口之间也是继承关系,而且可以实现多继承性
    注:5,6描述的是java中的继承的特点
  7. api中的Collection、Comparable就是一个接口
  8. 接口中的所有成员变量都默认是由public static final修饰的。
  9. 接口中的所有方法都默认是由public abstract修饰的
public class TestInterface {
	public static void main(String[] args) {
		System.out.println(A.I);//可以直接输出
	}
}
interface A{
	//常量:所有的都是用public static final
//	可以省略前面的声明 public static  final 
	int I = 1;
	public static final boolean FLAG = false;
	//抽象方法:所有的抽象方法都用public abastract修饰,可以省略
	public abstract void method1();
	void method2();
}
abstract class BB implements A{
}
class DD{
}
interface MM{	
}
class CC extends DD implements A,MM{

	public void method1() {	
	}
//	void method2() {
//	权限不能小于接口定义的,所以只能定义为public
//	}
	public void method2() {	
	}
}
//接口之间仍为继承关系!(而且可以多继承)
interface JJ extends MM,A{
	void method4();
}

8.接口与具体的实现类之间也存在多态性

//接口与具体的实现类直接也存在多态性
public class TestInterface1 {
	public static void main(String[] args) {
		Duck d = new Duck();
		TestInterface1.test1(d);
		TestInterface1.test2(d);
		TestInterface1.test3(d);
	}
	public static void test1(Runner r) {//Runner r = new Duck();
		r.run();//虚拟方法调用
	}
	public static void test2(Swimmer s) {//Swimmer s = new Duck();
		s.swim();;
	}
	public static void test3(Flier f) {//Flier f = new Duck();
		f.fly();
	}
	
}
interface Runner{
	public abstract void run();
}
interface Swimmer{
	void swim();
}
interface Flier{
	void fly();
}
class Duck implements Runner,Swimmer,Flier{

	@Override
	public void fly() {
		System.out.println("丑小鸭也可以会变成白天鹅!");
	}

	@Override
	public void swim() {
	System.out.println("红掌拨清波");
	}

	@Override
	public void run() {
		System.out.println("鸭子屁股扭扭的走路");
	}

}

3.接口使用总结

  1. 通过接口可以实现不相关的类的相同行为,而不需要考虑这些类之间的层次关系
  2. 通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩张功能。
  3. 接口主要用来定义规范,接触耦合关系。如:高通。

4.结果的应用和 实现接口的匿名类对象

//接口应用
public class TestUSB {
	/*输出结果:
	 * 	U盘开始工作
		此设备开始工作....
		U盘结束工作
		U盘开始工作
		此设备开始工作....
		U盘结束工作
		手机开始工作
		此设备开始工作....
		开机结束工作
	 */
	public static void main(String[] args) {
		Computer c = new Computer();
		c.doWork(new Flash());
		
		Flash f = new Flash();
		c.doWork(f);
		
		//实现接口的匿名类对象
		USB phone = new USB(){

			@Override
			public void start() {
				System.out.println("手机开始工作");
			}

			@Override
			public void stop() {
				System.out.println("开机结束工作");
			}
			
		};
		c.doWork(phone);
	}
}
//这里为标准
interface USB{
	//USB尺寸的大小,可以设置为常量
	
	//功能设置为抽象
	void start();
	void stop();
}
class Computer{
	public void doWork(USB usb) {
		usb.start();
		System.out.println("此设备开始工作....");
		usb.stop();
	}
}
class Printer implements USB{

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

	public void stop() {
		System.out.println("打印机结束工作");
	}
	
}
class Flash implements USB{

	public void start() {
		System.out.println("U盘开始工作");
	}

	public void stop() {
		System.out.println("U盘结束工作");
	}
	
}

猜你喜欢

转载自blog.csdn.net/qq_34626097/article/details/83476698