java学习初探6之接口

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启动

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值