接口

接口

抽象类:具体实现和规范(抽象方法)都有

普通类:只有具体实现

接口:只有规范(自己无法写方法,专业的抽象!专业的约束!使得约束和实现分离:面向接口编程

1. 什么是接口?

接口就是规范,是比抽象类还要抽象的抽象。

接口的本质契约,就像法律一样,大家都要去遵守

OO的精髓,是对对象的抽象,最能体现这一点的就是接口

2. 声明接口

声明类的关键字是class声明接口的关键字是interface,接口不是类了

//声明(定义)接口的关键字是interface
public interface UserService{}

3. 用类去实现接口,接口可多继承

接口都需要有实现类,这个实现类的类名一般后缀为Impl (implements)

3.1 创建两个接口

//创建一个接口UserService
public interface UserService {
    //接口中的属性(字段)默认是常量   public static final,一般不在接口中定义常量
    int AGE = 99;

    //接口中的所有定义其实都是抽象的,接口里面的方法默认 :public abstract
    void add(String name);
    void delete(String name);
    void update(String name);
    void query(String name);
}
public interface TimeService {
    void timer();
}

3.2 创建一个实现接口的类

//接口都需要有实现类,这个实现类的类名一般后缀为Impl   (implements)
//类UserServiceImpl 要实现 接口TimeService    关键词implements
//实现了接口的类,必须要重写接口中的方法!! 接口可多继承               继承了抽象类的子类,必须要实现(如重写)抽象类的方法!!局限性:extends只能单继承
public class UserServiceImpl implements TimeService{
    @Override
    public void timer(){}
}

接口可多继承

//类UserServiceImpl要实现 接口UserService和接口TimeService (逗号隔开)
//类UserServiceImpl 要重写 这两个接口中的方法!!
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(){}
}

4. 接口的作用

/*总结接口的作用
    1.接口是规范,约束
    2.定义一些方法,让不同的人实现~
    3.接口中方法都默认是public abstract
    4.接口中的属性(字段)默认是常量,接口中常量一般默认 public static final	但是一般不在接口中定义常量
    5.接口不能被实例化(因为接口都不是类,没有构造方法),抽象类也不能被实例化,不能new它。()
    6.Impl类通过implements可以实现多个接口,逗号隔开,
    7.Impl类要去实现重写接口中的方法。
    8.总结博客
 **/

5. 总结:

5.1 抽象类、普通类、接口

抽象类:具体实现和规范(抽象方法)都有

普通类:只有具体实现

接口:只有规范(自己无法写方法,专业的抽象!专业的约束!使得约束和实现分离:面向接口编程

5.2 接口和抽象类

//一
企业中一般都用接口,因为接口可多继承,(不同的人都去实现这个接口)
而抽象类是通过extends 子类去实现抽象父类 ,extends只能单继承!java中只有单继承,(接口特殊,可多继承)
//二    
抽象类:用abstract修饰			public abstract class Action {}
实现抽象类的子类:用extends继承抽象类 	 public  abstract class A extends Action{}
声明(定义接口)(接口不是类):用interface声明 public interface UserService {}
实现接口的类:用implements        public class UserServiceImpl implements 																	UserService,TimeService{}
//三
new的本质是在调用构造器	
    不能new抽象类,只能靠子类去实现它:约束!	
    不能new接口,因为接口本身就不是类,没有构造器

//四
    这里的实现一般指重写

这里的实现一般指重写

posted @ 2022-04-07 17:37  intelliyu  阅读(52)  评论(0编辑  收藏  举报