文章目录

目录

文章目录

一.接口基本介绍

二、深入讨论

三、注意事项和细节

1.接口不能被实例化

2.接口中所有的方法都是public方法,接口中抽象方法,可以不用abstract修饰 图




一.接口基本介绍

接口就是给出一些没有实现的方法封装到一起。到某个类要使用的时候,再根据具体情况把这些类方法写出来。语法如下

interface 接口名{
//属性
//方法
}

class 类名 implements 接口{
自己属性;
自己方法;
必须实现的接口的抽象方法
}

 在jdk8后,可以有默认实现方法,需要使用default关键字

在jdk8后,可以有静态方法

package com.java.interface_;

public interface Ainterface {
    //写属性
    public int n1=10;
    //写方法
    //在接口中,抽象方法
    public void hi();
    //在jdk8后,可以有默认实现方法,需要使用default关键字
    default public void ok(){
        System.out.println("ok.....");
    }
    //在jdk8后,可以有静态方法
    public static void cry(){
        System.out.println("cry....");
    }
}

二、深入讨论

对初学者来说,理解接口的概念不算太难,难的是就是不知道什么时候使用接口,下面我列举几个场景。

1.我现在要制造战斗机,武装直升机,专家只需把飞机需要的供应的规格定下来即可,然后让别人具体实

2.现在有一个项目经理管理三个程序员,功能开发一个软件,为了控制和管理软件,项目经理可以定义一个接口,然后由程序员具体实现。

实际要求:3个程序员,编写3个类,分别完成对Mysql Oracle DB2数据库的链接数据库

 

package com.java.interface_;

public interface Dbinterface {//项目经理
    public void connect();
    public void close();
}


class MysqlDB implements Dbinterface {
    @Override
    public void connect() {
        System.out.println("mysql正在链接");
    }

    @Override
    public void close() {
        System.out.println("mysql正在退出");
    }
}

class OracleDB implements Dbinterface {
    @Override
    public void connect() {
        System.out.println("链接Oracle数据库");
    }

    @Override
    public void close() {
        System.out.println("退出Oracle数据库");
    }
}

 class Interface03 {
    public static void main(String[] args) {
        MysqlDB mysqlDB = new MysqlDB();
       t(mysqlDB);
        
    }
    public static void t(Dbinterface db){
        db.connect();
        db.close();
    }
}

 

三、注意事项和细节

1.接口不能被实例化

代码如下(示例):

package com.java.interface_;

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

    }
}

//接口不能被实例化
interface IA{ }

2.接口中所有的方法都是public方法,接口中抽象方法,可以不用abstract修饰 图示

代码如下(示例):

package com.java.interface_;

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

    }
}
//接口不能被实例化
interface IA{
    abstract void say();
}

 3. 一个普通类实现接口,就必须将该接口的所有方法都实现。可以使用alt+enter实现来解决

4.抽象类实现接口,可以不用实现接口的方法。

5.一个类同时可以实现多个接口

6.接口中的属性,只能是final的,而且是public static final 修饰符。比如:int

a=1;实际上是public static final int a=1;(必须初始化)

7.接口中属性的访问形式:接口名.属性名

8.一个接口不能继承其他的类,但是可以继承多个别的接口举例

interface A extends B C{ }

9.接口的修饰符 只能是public和默认,这点和类的修饰是一样的

package com.java.interface_;

public class InterfaceDetail02 {
    public static void main(String[] args) {
        //证明 接口的属性
        System.out.println(IB.n1);
        //IB.n1=30;不能这样定义
    }
}

//一个类同时可以实现多个接口
interface IB {
    int n1=10;//等价public static final int n1=10;
    void hi();
}
interface IC {
    void say();
}
interface ID extends IB,IC{
    
}
interface IE{}

class Pig implements IB,IC{
    @Override
    public void hi() {

    }

    @Override
    public void say() {
        
    }
}