Java的接口

Java的接口

  • 普通类:只有具体实现

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

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

  • 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是...则必须能...”的思想。如果你是天使,则必须能飞;如果你是汽车就必须能跑;如果你是好人,就必须干掉坏人;

  • 接口的本质是契约,就像我们人间的法律一样。制定好,然后大家都遵守。

  • OO的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都是针对具备了抽象能力的语言(比如c++ 、java、c#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象。

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

package com.cnblogs;
//本类用于实现
public class Application {
    public static void main(String[] args) {
        UserServiseImpl stu = new UserServiseImpl();
        stu.show();
        /*
        99
        99
        实现接口的方法
         */
    }
}

package com.cnblogs;
/*
本类为接口
 */
public interface UserService {
    //接口中不可以写普通方法

    //可以定义常量    public static final		接口里没有成员变量,都是常量。所以,你定义一个变量没有写修饰符时,默认会加上:public static final
    int AGE = 99;

    //接口中的所有定义的方法其实都是抽象的public abstract
    void show();
}

package com.cnblogs;
/*
本类用于实现接口
 */
public class UserServiseImpl implements UserService{
    @Override
    public void show() {
        //调用接口的常量
        int str = AGE;
        System.out.println(str);
        System.out.println(UserService.AGE);
        System.out.println("实现接口的方法");
    }
}

  • 作用:
    1. 约束
    2. 定义一些方法,让不同的人实现
    3. public abstract
    4. 常量 public static final
    5. 接口不能被实例化,接口中没有构造方法
    6. implements可以实现多个接口
    7. 必须要重写接口中的方法

注意:接口里是没有构造方法的,在创建实现类的对象时默认的super(),是调用的默认Object的无参构造。

接口的多继承:

package com.cnblogs;

public interface UserService2 {

}
package com.cnblogs;
/*
本类用于实现接口
 */
//多继承,需要重写两个接口的方法
public class UserServiseImpl implements UserService,UserService2{
    @Override
    public void show() {
        //调用接口的常量
        int str = AGE;
        System.out.println(str);
        System.out.println(UserService.AGE);
        System.out.println("实现接口的方法");
    }
}

接口可以继承接口

package com.cnblogs;

public interface UserService2 extends UserService{

}

抽象类可以实现接口(意义不大,还需要一个类来继承抽象类来实现)

package com.cnblogs;
/*
本类为接口
 */
public interface UserService {

    //接口中的所有定义的方法其实都是抽象的public abstract
    void show();

}

package com.cnblogs;

abstract class User implements UserService{
    @Override
    public void show() {
        System.out.println("抽象类实现接口");
    }
}

抽象类与接口的区别

抽象类是一个特殊的类,特殊在,抽象类中可以包含没有方法体的方法(抽象方法)。
接口可以理解成一个特殊的抽象类,特殊在,接口里的都是抽象方法,没有普通方法。
接口会为方法自动拼接public abstract,还会为变量自动拼接public final static。
抽象类可以有构造方法–用来给子类创建对象,接口中没有构造方法。
抽象类和接口都不能实例化(创建对象)。
接口可继承接口,并可多继承接口,但类只能单继承。
抽象方法只能声明,不能实现,接口是设计的结果 ,抽象类是重构的结果。

posted @ 2021-07-07 15:07  贪玩的阿柒  阅读(87)  评论(0编辑  收藏  举报