美文网首页
Java | 接口

Java | 接口

作者: tingshuo123 | 来源:发表于2018-08-13 16:26 被阅读24次

    接口的概念

    接口,主要是用来描述类需要具有什么样的功能(方法),而不给出每个功能具体实现,把这些功能的实现交给实现该接口的类去实现,实现该接口的类必须实现该接口的所有方法(接口的静态方法跟默认方法除外)。
    接口有以下几个特点:

    1. 接口中方法都默认且必须用 public 修饰的,因为是默认的所以可以省略不写。
    2. 接口中的域(属性)也是默认且必须用 public static final 修饰
    3. 接口跟抽象类一样不能实例化,可以声明变量
    4. 接口中不能有实例域也就是成员变量(ps:如果有违反了第二条, 接口不能被实例化有实例域也没啥意义)
    5. 实现接口时,必须将实现方法声明为 public
    6. 在 jdk 1.8 前接口不能有实现方法,之后就可以有了,可以用 staticdefault 声明实现方法。
    7. 可以用 instanceof 检查对象是属于某个一样的,去检查对象是否实现了某个接口。

    interface 声明一个接口:

    package com.project;
    
    public interface Person {
        // 吃东西
        void eat();
    }
    
    

    implements 实现一个接口

    package com.project;
    
    public class Woman implements Person{
    
        @Override
        public void eat() {
            System.out.println("正在吃苹果");
        }
    
    }
    

    接口中的静态方法

    接口中的静态方法必须写具体实现,且不被实现该接口的类继承,可以通过 接口名.方法名调用 类似于类的静态方法。

    static 声明一个静态方法

    package com.project;
    
    public interface Person {
        // 吃东西
        public static void eat() {
            System.out.println("正在吃苹果");
        }
    }
    

    不需要也不能实现接口的静态方法

    package com.project;
    
    public class Woman implements Person{
        
        public static void main(String[] args) {
            // 调用接口静态方法
            Person.eat();
        }
    }
    
    

    接口中的默认方法

    默认方法提供了接口方法的默认实现,如果实现接口的类没有重写默认方法,那么采用默认实现。
    跟静态方法不同的是,实现类会继承接口的默认方法,可以选择实现或者不实现。

    package com.project;
    
    public interface Person {
        // 吃东西
        public default void eat() {
            System.out.println("人正在吃苹果");
        }
    }
    

    默认方法冲突

    如果两个接口方法名相同,有类实现类这两个接口的话,实现类必须覆盖。
    如果接口跟父类方法名冲突,父类优先,接口方法会被忽略。

    相关文章

      网友评论

          本文标题:Java | 接口

          本文链接:https://www.haomeiwen.com/subject/czhubftx.html