1.接口语法
/*
* 接口也是一种引用类,可以等同看做类
* 1.如何定义接口,语法:
* 【修饰符】interface 接口名()
* 2.接口中只能出现:常量、抽象方法
* 3.接口其实是一个特殊的抽象类,特殊在接口是完全抽象的。
* 4.接口无构造方法,接口也无法被实例化
* 5.接口和接口间,可以多继承
* 6.一个类可以实现多个接口。(这里的实现可以等同看做继承)
* 7.一个非抽象类实现接口需要将接口中所以抽象方法实现,(重写,覆盖)
*/
public interface InterfaceTest {
//常量(必须使用public static final)修饰
public static final String SUCCESS="success";
public static final double PI=3.14;
//public static final可以省略
byte MAX_NUMBER=127;
//抽象方法 public abstract 可以省略
public abstract void m1();
void m2();
}
interface in1{
void m1();
}
interface in2{
void m2();
}
interface in3{
void m3();
}
//接口可以多继承
interface inchild extends in1,in2,in3{
void m4();
}
//一个类可以实现多接口 implements和extends意义差不多
class MyClass implements in1,in2{
public void m1(){}
public void m2(){}
}
class Class2 implements inchild{
public void m1(){}
public void m2(){}
public void m3(){}
public void m4(){}
}
2.接口作用
第一、可以使项目分层,所以层都面向接口开发,开发效率提高。
第二、接口使得代码和代码直接耦合度降低,就像内存条和主板意义,变得“可插拔”。
第三、接口和抽象类都能完成业务,优先选择接口,因为接口可以多实现多继承。一个类除了实现接口之外,还可以继承其他类,保留了类的继承。
/*
* 客户业务接口
* 接口作用:
* 1.可以使项目分层,所以层都面向接口开发,开发效率提高。
* 2.接口使得代码和代码直接耦合度降低,就像内存条和主板意义,变得“可插拔”。
*/
public interface CustomService {
//定义一个退出系统的方法
void logout();
}
/*
* 编写接口的实现类
* 该类的编写完全是面向接口去实现的
*/
public class CustomServiceImp implements CustomService {
//对接口中的抽象方法进行实现
public void logout(){
System.out.println("成功退出系统!");
}
}
public class Test {
public static void main(String[] args) {
//要执行customServiceImp中logout方法
//以下程序面向接口去调用
CustomService cs=new CustomServiceImp();//多态
//调用(编译时看的CustomService,运行时看的CustomServiceImp)
cs.logout();//成功退出系统!
}
}
第二个实例:
/*
* 定义引擎接口,提供发动机和汽车使用
*/
public interface Engine {
void start();
}
/*
* YAMAHA发动机
*/
public class YAMAHA implements Engine {
public void start() {
System.out.println("YAMAHA启动");
}
}
/*
* VOLVO发动机
*/
public class VOLVO implements Engine {
public void start() {
System.out.println("VOLVO启动");
}
}
/*
* 定义汽车
*/
public class Car {
Engine engine;
public Car(Engine e){
this.engine=e;
}
public void testStart() {
engine.start();
}
}
public class Test {
public static void main(String[] args) {
//1.构造发动机
Engine volvo=new VOLVO();//这里是多态
//2.构造汽车,装上发动机
Car car=new Car(volvo);
//3.测试引擎
car.testStart();
//1.构造发动机
YAMAHA yamaha=new YAMAHA();
//2.装上发动机
car.engine=yamaha;//这里是多态,Engine e=yamaha;
//3.测试引擎
car.testStart();
}
}
输出:
VOLVO启动
YAMAHA启动