java interface
直接看例子,Example 1
/*接口也是一种引用类型,可以等同做类。
1.如何定义接口,语法:
修饰符 interface 接口名{}
2.接口中只能出现常量和抽象方法;
3.接口其实是一个特殊的抽象类,特殊在接口是完全抽象的
4.接口中没有构造方法,接口也无法被实例化
5.接口和接口之间可以多继承
6.一个类可以实现多个接口(这里的实现可以等同看做“继承”)
7.一个非抽象的类实现接口,需要将接口中所有的方法“实现/重写/覆盖”*/
public interface A {
//常量
public static final String SUCCESS = "success";
public static final String PI = "3.14";
public static final byte MAX_VALUE=127;
//抽象方法
public abstract void m1();
void m2();
interface B {
void m1();
}
interface C {
void m2();
}
interface D {
void m3();
}
interface E extends B,C,D{
void m4();
}
//extends只能单继承,所以引入implements实现
class MyClass implements B,C{
public void m1(){}
public void m2(){}
}
class F implements E{
public void m1(){}
public void m2(){}
public void m3(){}
public void m4(){}
}
}
/*
客户业务接口
接口的作用:
1.可以使项目分层,所以层都要面向接口开发,开发效率提高了。
2.接口使代码和代码之间耦合度降低,变得“可插拔”可以随意切换。
3.接口和抽象类都能完成某个功能,优先是选择接口。
因为接口可以多实现,多继承,并且一个类除了接口之外,还可以去继承其他类(保留了其他类)
*/
public interface CustomerService {
//定义一个退出系统的方法
void logout();
}
//编写接口实现类
public class CostomerServiceImpl implements CustomerService {
public void logout() {
System.out.println("系统成功退出!");
}
}
public class Test01 {
public static void main(String[] args) {
// 以下面向接口调用
CustomerService cs = new CostomerServiceImpl(); //多态
cs.logout();
}
}
Example 2
package Car;
/*
* 汽车和发动机之间的接口
* 生产汽车的厂家面向接口生产
* 生产发动机的厂家面向接口生产
* */
public interface Engine {
// 所有发动机都可以启动
void start();
}
package Car;
//生产汽车
public class Car {
// 引擎
// 面向接口编程
Engine e;
// constructor
Car(Engine e) {
this.e = e;
}
// 汽车应该能够测试引擎
public void testEngin() {
e.start();
}
}
package Car;
public class HONDA implements Engine {
public void start() {
System.out.println("HONDA启动");
}
}
package Car;
public class YAMAHA implements Engine {
public void start() {
System.out.println("YAMAHA启动");
}
}
package Car;
public class Test {
public static void main(String[] args) {
// 生产引擎
Engine e1 = new YAMAHA();
// 生产汽车
Car c = new Car(e1);
// 测试引擎
c.testEngin();
}
}
Written on January 7, 2019