zoukankan      html  css  js  c++  java
  • 接口与抽象类

    接口中的属性 默认是 public static final类型  就算你不加 默认也是存在

    方法默认都是public abstract类型 不加默认也存在

    比如

    interface K

    {

        String abc="sdfd";

        void add() throws Exception;

    }

    实际上编译时 是这样

    interface K

    {

        Public static final String abc="sdfd";

        public abstract void add() throws Exception;

    }

     

    为什么属性是static

       因为 接口不能实例化,非静态变量必须是实例化的对象或则有方法体的方法可以可以调用 所以不是静态就没有意义了

    为什么必须是 public

      因为接口本来就是一种约束 定义抽象方法 就是约束子类必须去实现 必须是public 否则访问不到

      属性不定义成public 外界访问不到 同样没有意义了

    为什么方法是abastract

    因为带有abstract 关键字的方法,子类才必须实现 所以带有abstract关键字的方法

    不能带有final  abstract 是子类必须继承  final 是该方法不能被重写 所以会产生冲突

     比如

    interface K

    {

        Public String abc="sdfd";

        public void add() throws Exception;

    }

     

    public class H implements K{

        public String abc="";

        public  final void add() {

           System.out.println(K.abc);

        }

        public static void main(String[] args) {

           H h=new H();

           h.add();

        }

    }

     

    子类实现接口时基本的结构必须与接口一致,你不能再方法上添加如 static修饰符

    不得将 public 修饰符改成private  但是你可以加上修饰符 final 表示子类的子类不能重写该方法

     

    其实继承接口实现方法 继承类 重写方法 的语法是一致的

     

    接口可以继承接口.抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数(这句话有点问题 看下面例子 V类并没有明确的构造函数 只有默认的构造函数).

     

    class V implements IV{

        public void add()

        {

           System.out.println("add");

        }

    }

    interface IV

    {

        public void add();

    }

    interface IV1

    {

        public void add();

    }

    public abstract class 抽象类继承 extends V implements IV,IV1  {

     

        public  void add() {

           // TODO Auto-generated method stub

           super.add();

        }

    }

     

    抽象类 与接口的区别

    1接口内只能是功能的定义,抽象类中可以包括功能的定义和功能的实现。

     2. 抽象类是用来extends的,而继承有一定的局限性,只能继承一个类
    而接口就不同,可以同时实现多个接口

    3 接口字段定义默认为public static final,而抽象类的则默认为friendly

  • 相关阅读:
    DevExpress WPF入门指南:加载动画的应用
    DevExpress v17.2—WPF篇(一)
    添加MyEclipse WebSphere Portal Server支持(二)
    DevExpress v17.2—WinForms篇(六)
    MyEclipse 2017 CI 9 发布(附下载)
    DevExpress v17.2新版亮点—WinForms篇(五)
    DevExpress v17.2新版亮点—WinForms篇(四)
    添加MyEclipse WebSphere Portal Server支持(一)
    内嵌iframe页面在IOS下会受内部元素影响自动撑开的问题
    组合 a 标签与 canvas 实现图片资源的安全下载的方法与技巧
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9332100.html
Copyright © 2011-2022 走看看