接口 interface

java的接口是通过interface来实现

为什么要有接口?

java没有多继承 可以用接口来实现多继承的功能
因为类是两个相同事物的共性抽取出来的,接口可以 看做是两个不同事物的某一个特性抽取出来.

      eg: 小东和牧羊犬都会吃饭,难道他们俩是同一类事物吗? 肯定不是的.那么他们都会吃饭的这个特性就可以抽取成一个接口来使用

接口说白了也即是 完成类所不合理的一些特征而存在的 弥补类的短板 

接口的特征

 *
 * 1:接口的使用
 *      interface 来定义
 *
 * 2: java中 接口和类是并列的两个结构
 *
 * 3 : 定义接口中的成员
 *    jdk7 以及以前 : 接口中只能定义全局常量和抽象方法
 *        > 全局常量: public static final :但是书写是常常省略 public  static fianl
 *        > 抽象方法: public abstract
 *
 *    jdk8: 除了定义全局常量和抽象方法之外,还可以定义静态方法, 默认方法
 *
 *
 * 4 : 接口中不能定义构造器,也就是不能被实例化
 *
 * 5: 在java开发中几口通过让类去实现(implements)的方式来使用,
 *           如果实现类 覆盖了接口中的所有抽象方法,则此实现类就可以实例化
 *           如果实现类没有重写完所有的抽象方法,则此实现类还是一个抽象类
 *
 *
 *
 * 6: java类实现多个接口 -----> 弥补了java单继承性的局限性
 *        格式 : class  AA implements BB, CC, DD, EE
 *
 *
 * 7: 接口与接口之间可以继承,而且可以多继承
 *
 * 8: 接口的具体使用: 体现了多态
 *
 * 9: 接口实际上可以看做是一种规范

面试题:

排错

interface A { int x = 0;
}
class B {
    int x = 1;
}
class C extends B implements A {
    public void pX() {
System.out.println(x); }
    public static void main(String[] args) {
        new C().pX();
} }
pX() 方法的x没有声明形参,所以此处有问题
扫描二维码关注公众号,回复: 7496207 查看本文章
interface Playable {
    void play();
}
interface Bounceable {
    void play();
}
interface Rollable extends Playable, Bounceable {
     Ball ball = new Ball("PingPang");
}


class Ball implements Rollable {
    private String name;
    public String getName() {
        return name;
}
    public Ball(String name) {
        this.name = name;
}
public void play() {
ball = new Ball("Football"); System.out.println(ball.getName());
} }
Rollable接口中没有重写  继承来的接口中的方法, 
Ball 中的ball属性是不能重写定义的  因为此变量是在Rollable 接口中定义的  ,
接口中的变量时常量是不可以被改变的

练习题

定义一个接口用来实现两个对象的比较。 interface CompareObject{
}
定义一个Circle类,声明redius属性,提供getter和setter方法
定义一个ComparableCircle类,继承Circle类并且实现CompareObject接口。在 ComparableCircle类中给出接口中方法compareTo的实现体,用来比较两个圆的半 径大小。
定义一个测试类InterfaceTest,创建两个ComparableCircle对象,调用compareTo 方法比较两个类的半径大小。
思考:参照上述做法定义矩形类Rectangle和ComparableRectangle类,在 ComparableRectangle类中给出compareTo方法的实现,比较两个矩形的面积大小

猜你喜欢

转载自www.cnblogs.com/zhaoyunlong/p/11697180.html