接口:interface和implement关键字

对现实世界中不同类型的多种事务进行抽象的描述

接口是一种特殊的抽象

接口可以包含:

1,只能声明抽象方法

所以方法默认都是抽象方法(没有声明abstract关键字,自动添加)

所以方法默认都是公共方法(没有声明public关键字,自动添加)

public interface  A
{
void test();//==public abstract void test();
}

2.成员属性

所有成员属性默认为静态属性

int num=100;//==public static final int num=100;

不能包含成员方法,构造方法,静态代码块,非静态代码块;

接口中所有的抽象方法都有具体类(具体子类)来实现:

关键字:implement

一个具体类只能继承一个父类(java只能单向继承),实现指定接口;

——变相实现多继承

 

package code62403;

public interface FristInterface {
    void test(int a, int b);//public abstract void test(int a,int b);
    void voluem(int a,int b,int c);
}
package code62403;

public interface TwoInterface {
void input();
void output();
}
package code62403;

public class TestInterface {
    public static void main(String[] args) {
        FristInterface frist=new SubDemo();
        frist.test(1,2);
        frist.voluem(1,2,3);
        TwoInterface two=new SubDemo();
        two.input();
        two.output();
    }
}





abstract class Demo
{
    int number =100;
    boolean flag;
    abstract void dept();
}



 class suBDemo extends Demo implements FristInterface,TwoInterface
{
    void dept()
    {
        System.out.println("DEPT");
    }

    @Override
    public void test(int a, int b) {
        System.out.println("1");
    }

    @Override
    public void voluem(int a, int b, int c) {
        System.out.println("2");
    }

    @Override
    public void input() {
        System.out.println("3");
    }

    @Override
    public void output() {
        System.out.println('4');
    }
}

 

 

 

在项目中:如果接口中定义了属性(默认静态常量),那么在该接口中不会再定义方法了;

一个类可以实现多个接口;(常量接口:该接口只会静态常量,//不会报错,但是后期不易维护  );

如果接口中声明了属性(默认静态常量),那么不会再该接口中声明其他方法;

常量接口:该接口只定义静态常量;

接口就是一种规范,也是一种能力和约定;

当父类的中的方法种类无法满足子类的需求时,可以使用接口扩充子类的能力;

——接口是不能实现接口的;

——接口能继承接口,并可以继承多个接口:

接口与抽象类的区别:

相同点 :

可以编译字节码

不能被实例化

可以作为引用类型(多态)

具有Object类中所定义的所有方法

不同点:

所有属性的是公共的静态常量//public static final修饰;

所有的方法都是公共抽象的//public abstract修饰;

没有静态代码块,非静态代码块,构造方法;

接口回调

使用一个接口的引用,调用其具体实现类中的该接口实现方法;

 

package code62403;

public class TestCallInterface {
    public static void main(String[] args) {
        Usb m = new Mouse();
        Usb k = new Keyboard();
        Disk d=new Disk();
        Computer c=new Computer();
        c.setUsb(m);
        c.on();
        c.setUsb(k);
        c.on();
        c.setUsb(d);
        c.on();
    }
}
interface Usb{
    public abstract void service();
}
class Mouse implements Usb
{
    @Override
    public void service() {
        System.out.println("鼠标启动了");
    }
}
class Keyboard implements Usb
{
    @Override
    public void service() {
        System.out.println("键盘开始工作了");
    }
}
class disk implements Usb{
    @Override
    public void service() {
        System.out.println("disk开始工作了");
    }
}
//普通实现方式
/*
class Computer
{
    Usb mouse;
    Usb keyboard;

   */
/* public Usb getMouse() {
        return mouse;
    }

    public void setMouse(Usb mouse) {
        this.mouse = mouse;
    }

    public Usb getKeyboard() {
        return  keyboard;
    }

    public void setKeyboard(Usb keyboard) {
        this.keyboard = keyboard;
    }*//*


    public void on(Usb usb)
    {
            usb.service();
    }
}
*/
//进化方式
class Computer
{
    private Usb usb;

    public Usb getUsb() {
        return usb;
    }

    public void setUsb(Usb usb) {
        this.usb = usb;
    }
    public void on()
    {
        usb.service();
    }
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值