关于java的接口

关于java的接口

我们在上篇文章中讲解到了抽象类,本篇文章我们来介绍一下接口,接口是一个比抽象类还要抽象的东西,只有规范,自己没有办法写方法,也称之为专业的约束。

一、接口

  • 普通类:只有具体实现。
  • 抽象类:具体实现和规范(抽象方法)都有!
  • 接口:只有规范!自己无法写方法,专业的约束!
  • 约束和实现分离:面向接口编程。

二、接口的定义

  • 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是…则必须能…”的思想。如果你是鸟则必须能飞。如果你是汽车,则必须能跑。如果你好人,则必须干掉坏人。如果你是坏人,则必须欺负好人。
  • 接口的本质是契约,就像我们人间的法律一样。制定好后大家都遵守。
  • OO的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计 模式都只针对具备了抽象能力的语言(比如c++、java、c#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象。

三、接口的声明

  • 声明类的关键字是class,声明接囗的关键字是interface

我们新建一个软件包,新建一个UerService的接口,我们可以看到,应用关键字以后,Idea自动帮我们把类转换为了接口,就是绿色的I图标

package oop.Demo11;

public interface UserService
{
    
}

关于java的接口_第1张图片

四、接口中的方法

  • 接口中的方法 ,所有定义的方法其实都是抽象的。
  • 定义方法可以直接写返回值类型和方法名字,也可以加参数。
package oop.Demo11;

public interface UserService
{
    public abstract void run();//public abstract在编译器中是灰色,可以不写
    
    void run();//定义方法可以直接写返回值类型和方法名字。
}
  • 定义接口中的增删改查
package oop.Demo11;

public interface UserService
{
    void insert();//增
    void delete();//删
    void update();//改
    void select();//查
}
  • 接口都要有实现类,实现类的命名一般会用Impl结尾(第一个是 i)。
  • 类可以实现接口,通过implements关键字实现。
package oop.Demo11;

public class UserServiceImpl implements UserService//这里会报错,因为需要重写方法
{
    //ALT+INS
}
package oop.Demo11;

public class UserServiceImpl implements UserService
{
    @Override
    public void insert(String name) {
        
    }
    @Override
    public void delete(String name) {

    }
    @Override
    public void update(String name) {

    }
    @Override
    public void select(String name) {

    }
}
  • 实现了接口的类,需要重写接口的方法。

五、接口类的实现

  • 抽象类,只能是单继承,但是接口可以实现多继承。

我们再定义一个接口,名字叫做TimeService。

package oop.Demo11;

public interface TimeService
{
    void timer();
}
  • 多继承,就是在刚刚继承的接口后边,再继承一个接口。
package oop.Demo11;

public class UserServiceImpl implements UserService,TimeService
{
    @Override
    public void insert(String name) {

    }
    @Override
    public void delete(String name) {

    }
    @Override
    public void update(String name) {

    }
    @Override
    public void select(String name) {

    }
    @Override
    public void timer() {
        
    }
}
  • 类里面有方法的实现,但是接口里面只有方法的定义。

六、接口中的属性

  • 接口中的属性都是常量。
package oop.Demo11;

public interface UserService
{
    public static final int age=10;//public static final是灰色的
    
    int age=10;

}

七、总结

  • 约束!
  • 定义方法,让不同的人实现。
  • 接口中的方法都是抽象方法。
  • 接口中的属性都是常量。
  • 接口不能实例化,和抽象类一样不能new,因为没有构造方法。
  • 接口可以实现多个,通过implements实现,但是必须要重写接口的方法。
  • 抽象的思维,一个好的程序员或者更高层的架构师,他们的思维都是可以将现实抽象为程序的模型,自己实现接口等。

你可能感兴趣的:(java,开发语言)