接口(基础)

一、接口说明

接口是为了弥补java中不能实现多继承而出现的,接口比抽象类更抽象。

接口没有构造方法,不能被new,没有对象,不是类概念,也没有成员变量啥的。

1.1、接口说明

1、定义接口使用interface实现

2、接口中所有的方法默认都是public abstract修饰的,也就是不可以加方法体,但是可以使用default

关键字修饰方法,那就可以加方法体

3、接口中所有的变量都是public static final修饰的,是常量需赋值,三个关键字可以省略。

4、接口中没有构造方法,构造方法用于创建对象(接口不能new对象)但是可以使用多态

5、类与类之间之间是继承关系(extends)接口与类之间是实现关系(implements)

6、实现接口的类要实现接口中的所有方法,如果不实现接口中的方法,那么该类是抽象类

7、接口可以被类多实现,接口跟接口是继承关系,并且接口之间支持多继承。

8、类既可以在继承类的同时也可以实现接口

9、与继承关系类似的,接口与实现类之间存在多态性

1.1.1、实例:

接口:

public interface Usb {
	void service();
}

具体类:Computer

public class Computer {
	Usb usb1;
	Usb usb2;
	Usb usb3;
	public void run() {
		System.out.println("电脑启动了");
		if(usb1!=null) {
			usb1.service();
		}
		if(usb2!=null) {
			usb2.service();
		}
		if(usb3!=null) {
			usb3.service();
		}
	}
	
}

具体使用的类:Mouse Earphone Feng

public class Mouse implements Usb{

	@Override
	public void service() {
		// TODO Auto-generated method stub
		System.out.println("鼠标可以正常使用");
	}	
}

public class Earphone implements Usb{

	@Override
	public void service() {
		// TODO Auto-generated method stub
		System.out.println("耳机可以正常使用");
	}

}

public class Feng implements Usb{

	@Override
	public void service() {
		// TODO Auto-generated method stub
		System.out.println("风扇可以正常使用");
	}
	
}

测试:

public static void main(String[] args) {
		// TODO Auto-generated method stub
		Computer computer=new Computer();
		computer.usb1=new Mouse();
		computer.usb2=new Earphone();
		computer.usb3=new Feng();
		computer.run();
	}
 
 
 结果:
 电脑启动了
鼠标可以正常使用
耳机可以正常使用
风扇可以正常使用

1.2、接口意义:

1、简化abstract关键字

2、解决多继承问题:接口可以被类多实现

1.3、接口和抽象类的异同

1、接口中的方法默认都是抽象的,java8开始有默认方法(default):抽象类中可以有非抽象方法

2、接口中的变量都是final类型的,而抽象类中的不一定;

3、一个类可以实现多个接口,但是只能继承一个抽象类;

4、一个类要实现接口的所有方法,而不一定要实现抽象类的所有方法

5、抽象类是对类的抽象,是一种模板设计,接口是对行为的抽象,是一种行为规范。

你可能感兴趣的:(java,jvm,开发语言)