Java接口(详解)

  • 概念:如果一个类中所有的方法都是抽方法,则这个类就可以表示为Java中另外一种类型,即接口。
  • 接口是一种特殊的抽象类。

接口定义格式:

[修饰符] interface <接口名> extends 父类接口1,父类接口2...
{
    //属性和方法的定义    
}
  • 接口的结构与类完全相同。
  • 接口的访问控制修饰符与类一样, 但只有public和默认两种。
  • 接口的声明要使用关键字interface,声明类的关键字是class。
  • 接口中所有的方法都是抽象方法,默认的修饰符为“public abstrecr".在定义中可以省略。例如,“void eat ();” 表示定义了一个抽象方法eat ()。
  • 接口中所有的变量都是全局常量,默认的修饰符为“publice static final", 在定义中可以省略。例如,“int a=10;"表示定义了一个全局常量a。
  • 接口可以继承多个其他接口,即通过接口实现了多重继承。
  • 接口不能被实例化,接口中没有构造方法,需要通过一个类来实现接口中所有抽象方法,才能被实例化,这个类可以称为接口的实现类。实现接口使用关键字implements。
  • implements可以实现多个接口。
  • 实现接口必须重写接口中的方法。
  • 接口的本质是契约。

接口的作用:

  • 约束
  • 定义一些方法,让不同的人实现。
  • 接口中默认的方法:public abstract

案例一

定义两个接口:UserService、TimeService

public interface UserService {
    //定义一个属性 (常量)public static final
    int AGE = 69;
    //接口都需要有实现类
    //接口中的所有定义方法都是抽象的 public abstract
    //定义四个方法
    void add(String name);
    void delete(String name);
    void update(String name);
    void query(String name);
}
public interface TimeService{
    void timer();
}

定义一个实现类:UserServiceImpl

//实现接口的类,需要重写接口中的方法
//一个类可以实现接口,通过关键字implements
//
public class UserServiceImpl implements UserService,TimeService{//利用接口实现多继承
    @Override
    public void add(String name) {

    }

    @Override
    public void delete(String name) {

    }

    @Override
    public void update(String name) {

    }

    @Override
    public void query(String name) {

    }

    @Override
    public void timer() {

    }
}

案例二

创建一个接口,定义两个方法

public interface UserService {
 void eat();
 void run();
}

创建两个子类,定义方法的具体细节。

public class Person implements UserService{
    @Override
    public void eat() {
        System.out.println("大家在吃东西");
    }
    @Override
    public void run() {
        System.out.println("大家在跑步");
    }
}
public class Student implements UserService{
    @Override
    public void eat() {
        System.out.println("学生在吃零食");
    }

    @Override
    public void run() {
        System.out.println("学生在跑步");
    }
}

创建一个Application类

public class Application{
    public static void main(String[] args) {
        Person person = new Person();
        Student student = new Student();
        person.run();
        person.eat();
        student.run();
        student.eat();

    }
}

运行结果:

 

案例三:接口的多继承

创建两个接口

public interface TimeService {
    void eat();
}
public interface UserService {
  void run();
}

创建两个子类

public class Person {
    String name = "林枫";
    int age = 20;
    public void show(){
        System.out.println("姓名:"+name+"\t年龄:"+age);
    }
}
public class Student extends Person implements TimeService,UserService{
    @Override
    public void eat() {
        System.out.println("在吃饭");
    }

    @Override
    public void run() {
        System.out.println("在比赛");
    }
}

创建一个Application类

public class Application {
    public static void main(String[] args) {
        Person person = new Person();
        Student student = new Student();
        student.show();
        student.eat();
        student.run();
    }
}

运行结果:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的小鸡仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值