Java-19 接口(interface)

1.接口概述:为了体现事物功能的扩展性,Java中就提供了接口来定义这些额外功能,并不给出具体实现,将来哪些类需要拓展功能直接把这些额外功能实现即可

2.接口特点

  1.接口用关键字interface表示

    格式:interface 接口名 {}

  2.接口里面写抽象方法

  3.类实现接口用implements表示

    格式:class 类名 implements 接口名 {}

3.接口实例化方法

  1.按照多态的方式,由具体的子类实例化。其实这也是多态的一种,接口多态。

  2.接口的子类 要么是抽象类 要么重写接口中的所有抽象方法

//定义动物特殊功能
interface AnmialTool{
    public abstract void show();
    public abstract void work();
}
//抽象类实现接口
abstract class Cat implements AnmialTool{
    @Override
    public void show(){
        System.out.println("钻火圈");
    }
}
//非抽象类重写接口所有抽象方法
class Dog implements AnmialTool{

    @Override
    public void show() {
        System.out.println("反复横跳");
    }

    @Override
    public void work() {
        System.out.println("挣钱");
    }
}

public class InterfaceDemo {
    public static void main(String[] args) {
//        AnmialTool anmialTool=new AnmialTool() ;错误写法,接口不能实例化
        //接口多态实现接口实例化
//        AnmialTool cat=new Cat() ;错误写法,因为Cat类是抽象类,也不能实例化
        AnmialTool dog=new Dog() ;
        dog.show();//反复横跳
        dog.work();//挣钱
    }
}

4.接口成员的特点 

  成员变量:只能是常量,而且是静态的
       通过反编译观察发现,它对成员变量是有默认修饰符:public static final
       如果我们不写,默认加上
       推荐:手动全部给出
  构造方法:接口里面没有构造方法,因为接口主要是扩展功能的,而没有具体存在

  成员方法:只能是抽象方法,没有方法体
       通过反编译观察发现,它对方法是有默认修饰符:public abstract void
       如果我们不写,默认加上
       推荐:手动全部给出

  注意:
    虽然接口里面没有构造方法,但是我们说过,所有的类都继承一个超类:Object
    Class Object是类Object结构的根。 每个class都有Object作为超类
         所有的对象都实现了该类里面的方法

interface Tool{
    int num =3;
    public abstract void tools();
}

class Port implements Tool{

    @Override
    public void tools() {
        System.out.println("接口功能实现");
    }
}
public class InterfaceDemo2 {
    public static void main(String[] args) {
        Tool tool = new Port();
        tool.tools();//接口功能实现
        System.out.println(tool.num);//3
    }
}

接口Tool.class文件反编译结果

Java-19 接口(interface)

 

 5.类与类,类与接口以及接口与接口的关系

  1.类与类之间的关系
    继承关系,只能单继承,不能一次性继承多个,但是可以多层继承
  2.类与接口之间的关系
    实现关系,类可以单个实现接口,也可以一次性实现多个接口,可以在继承一个类的时候,实现多个接口,每个类默认继承自Object类
  3.接口与接口之间的关系
    没有实现关系,只有继承关系,接口可以单继承一个接口,接口也可以一次性继承多个接口,可以多继承

interface Inter1{

}

interface Inter3{

}
//接口可以单继承一个接口,接口也可以一次性继承多个接口
interface Inter2 extends Inter1,Inter3{

}



class Father{

}
//类可以单个实现接口,也可以一次性实现多个接口, 可以在继承一个类的时候,实现多个接口
class Son extends Father implements Inter1,Inter2{

}

public class InterfaceDemo3 {
    public static void main(String[] args) {

    }
}

6.抽象类和接口的区别

  1.成员区别

   

  成员变量 成员方法 构造方法
抽象类 变量,常量 抽象方法,非抽象方法 构造方法(不能直接实例化)
接口 常量

抽象方法

只有继承超类object的构造方法

 

  2.关系区别

    类与类                 继承,单继承

    类与接口             实现,单实现,多实现

    接口与接口         继承,单继承,多继承

  3.设计理念区别

    抽象类      被继承体现的是:”is a”的关系。共性功能

      接口          被实现体现的是:”like a”的关系。扩展功能

 

上一篇:LInux Socket绑定网卡和IP


下一篇:Java注解