java 面向对象-接口interface

接口interface

java中的继承关系是单继承,如果拥有多个父类的时候,可以考虑使用接口实现
    java中接口具备广泛的使用
      用法:
         使用interface 修饰
         接口中可以包含多个方法,且方法跟抽象类中的抽象方法一致,可以不写实现,子类在实现接口的时候必须要实现代码逻辑
         子类实现接口时使用implements 关键字
     特征:
        1 接口中的所有方法都是抽象方法,不能将其实现
        2 接口中的所有方法的修饰符都是public,不写也都是public的权限,不是default
        3 接口不能被实例化
        4 接口的子类必须要实现接口中的所有方法,跟抽象类有所不同,抽象类中只有抽象方法需要被子类实现
        5 子类可以实现多个接口
        6 接口中的变量都是静态常量,如果变量没有被static修饰,它也是静态常量,不用final关键字修饰,也是静态常量
        7 接口中的方法和常量无论是否添加public修饰符,默认的权限有且仅有一个,就是public

      接口的使用:
        1 接口代表一种能力,接口中可以定义N个方法,子类在进行实现的时候,必须要实现这些方法,将这些方法进行实现,就意味着赋予了方法能力。
           关心实现类有何能力,而不关心实现细节

     抽象类和接口的区别:
        1 抽象类中的方法 可以有抽象方法也可以有普通方法,接口中只能包含抽象方法
        2 抽象类需要使用abstract关键字来修饰,而接口使用interface关键字来修饰
        3 子类使用extends来继承抽象类,使用implments来实现接口
        4 子类继承抽象类必须要实现所有的抽象方法,普通方法可以不重写,而接口中的所有方法必须实现
        5 抽象类中可以定义成员变量,而接口中只能定义静态常量
        6 抽象类在子类实现的时候是单继承,而接口时多继承
        7 抽象类和接口都不能实例化,但是抽象类中可以加抽象方法,抽象类中有构造方法,继承了抽象类的子类中通过super(参数列表)调                  用抽象类中的构造方法,接口中没有构造方法
        8 抽象类中可以实现接口并且不实现接口中的方法,接口只能继承接口,不能实现接口

      注意:在实际的项目开发中,如果可以使用接口尽量使用接口,将单继承的父类留在最关键的地方
package com.yuzhu.InterfaceDemo;

public abstract class Door {
    public abstract void openDoor();
    public abstract  void closeDoor();
}

package com.yuzhu.InterfaceDemo;

public interface  Lock {
    static final int a =100;
    void openLock();
    void closeLock();

}

package com.yuzhu.InterfaceDemo;

public interface DoorBell {
    void photo();
}


package com.yuzhu.InterfaceDemo;

import java.util.concurrent.Callable;

public class LockDoor extends Door implements Lock,Callable ,DoorBell{

    @Override
    public Object call() {
        return null;
    }

    @Override
    public void openDoor() {
        System.out.println("open door");
    }

    @Override
    public void closeDoor() {
        System.out.println("close door");
    }

    @Override
    public void openLock() {
        System.out.println("openlock");
    }

    @Override
    public void closeLock() {
        System.out.println("close lock");
    }

    @Override
    public void photo() {
        System.out.println("拍照,存档");
    }
}


package com.yuzhu.InterfaceDemo;

public class TestInterface {
    public static void main(String[] args) {
        LockDoor lockDoor = new LockDoor();
        lockDoor.openDoor();
        lockDoor.closeDoor();
        lockDoor.openLock();
        lockDoor.closeLock();
        System.out.println(LockDoor.a);
//        Lockdoor.a = 300;
    }
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值