接口和抽象类

作者: 墨线宝 | 来源:发表于2021-01-03 21:31 被阅读0次

    原文链接http://zhhll.icu/2020/05/08/java%E5%9F%BA%E7%A1%80/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/java%E5%9F%BA%E7%A1%80%E4%B9%8B%E6%8E%A5%E5%8F%A3%E5%92%8C%E6%8A%BD%E8%B1%A1%E7%B1%BB/

    抽象类

    抽象方法的声明没有方法体。

    abstract void func();
    

    包含抽象方法的类叫做抽象类。

    public abstract class Basic{
        abstract void func();
    
        protected abstract void func1();
    
        public abstract void func2();
    }
    

    抽象方法默认是public的,不可以设置为private

    接口

    在java8之前的接口只允许有抽象方法,是一个完全抽象的类,没有提供任何实现
    接口中的属性被隐式指明为static和final

    public interface Inter{
        int m();
    }
    

    java8之后允许接口包含默认方法和静态方法
    默认方法允许在不破坏已使用接口的代码的情况下,在接口中新增方法

    public interface Inter{
        int m();
        default void newMethod(){
            System.out.println("新增方法");
        } 
    }
    

    静态方法可以将工具功能放在接口,从而操作接口

    public interface Operations{
        void execute();
        
        static void runOps(Operations... ops){
            for(Operations op : ops){
                op.execute();
            }
        }
    }
    

    抽象类和接口比较

    • 可以实现多个接口;但只能继承一个抽象类
    • 接口只能包含静态属性,不支持对象状态,成员变量默认是public static final的;抽象类可以包含属性,非抽象方法可能引用这些属性
    • 接口不需要在子类实现默认方法,默认方法可以引用其他接口的方法;抽象类必须在子类中实现抽象方法
    • 接口没有构造器;抽象类可以有构造器
    • 接口隐式为public;抽象类可以为protected

    由于本身的博客百度没有收录,博客地址http://zhhll.icu

    相关文章

      网友评论

        本文标题:接口和抽象类

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