学习笔记---接口

接口

在这里插入图片描述

- 图片来自B站狂神说


1. 注意点:

  • 抽象类用abstract声明定义,而接口用interface声明定义

  • 抽象类继承用extends,单继承;而接口继承用implements,可以多继承

  • 子类继承接口后,必须重写接口中所有的类,否则子类定义为抽象类

  • 接口中只能定义抽象方法,不能定义普通方法

  • 接口里面的组成只有抽象方法和全局常量,所以很多时候为了书写简单,可以不用写public abstract 或者public static final。

  • 接口不能被实例化,要通过普通子类实例化,接口中没有构造方法


2. 作用:

  • 进行程序框架的一种约束以及规范,定义一些程序需要的方法,让不同的人去实现

3. 接口的使用:

  • 定义接口,使用interface定义
package oop.Demo08;

public interface UserService {
    
    
    void add(String name);
    void delete(String name);
    void update(String name);
    void query(String name);
}

  • 若子类同时继承接口和抽象类,格式如下
public class UserServiceImpl extends Student implements UserService, TimeService

  • 一个抽象类只能继承一个抽象类,但一个接口却可以使用extends关键字同时继承多个接口(但接口不能继承抽象类)
interface A{
    
    
    void run1();
}

interface B{
    
    
    void run2();
}

//C接口同时继承了A和B两个接口
interface C extends A,B{
    
      //接口使用extends继承接口
    void run3();
}

class X implements C{
    
    

    @Override
    public void fun1() {
    
    
    }

    @Override
    public void fun2() {
    
    
    }

    @Override
    public void fun3() {
    
    
    }

}

实例化代码示例:

package oop.Demo08;

public interface UserService {
    
    
    void add(String name);
    void delete(String name);
    void update(String name);
    void query(String name);
}
package oop.Demo08;

public interface TimeService {
    
    
    void time();
}
package oop.Demo08;

public abstract class Student {
    
    
    public abstract void test();
}
package oop.Demo08;

public class UserServiceImpl extends Student implements UserService, TimeService {
    
    
    @Override
    public void time() {
    
    
        System.out.println("time");
    }

    @Override
    public void add(String name) {
    
    
        System.out.println("add"+name);
    }

    @Override
    public void delete(String name) {
    
    
        System.out.println("delete"+name);
    }

    @Override
    public void update(String name) {
    
    
        System.out.println("update"+name);
    }

    @Override
    public void query(String name) {
    
    
        System.out.println("query"+name);
    }

    @Override
    public void test() {
    
    

    }
}
package oop.Demo08;

public class Application {
    
    
    public static void main(String[] args) {
    
    
        UserServiceImpl userService = new UserServiceImpl();
        userService.time();     //time
        userService.add("yang");    //addyang
        userService.delete("yang");     //deleteyang
        userService.query("yang");      //queryyang
        userService.update("yang");     //updateyang

        System.out.println("=========================");
        UserService userService1 = new UserServiceImpl();
        userService1.add("study");  //addstudy
        //userService1.time();  报错

        System.out.println("========================");
        TimeService userService2 = new UserServiceImpl();
        userService2.time();    //time
        //userService2.add("study");    报错
    }
}

猜你喜欢

转载自blog.csdn.net/yang862819503/article/details/113755567