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

    接口

    接口不是类,它不能有构造函数,接口的所有方法都必须是public的,而且不能有自己的属性。
    我们用interface表示接口
    interface iguan{
    public function age();
    public function name();
    }
    interface aguan extends iguan{
    public function eye();
    }
    这里我们定义了两个接口,使用interface来声明一个接口,这里的iguan和aguan都是接口的名字,其中iguan这个接口有age和name两个方法,而aguan这个接口只有eye这个方法。

    接口是不能定义方法的实现的,它只能定义一个方法名,后面跟一个分号即可。
    接口可以理解为类的简洁版,接口不能定义属性,接口可以继承,接口不能被实例化。
     
    总结接口的特点:
      接口的方法是公共的
      接口的方法默认是抽象的
      接口不能有属性(常量可以有)
      类如果去实现接口,必须实现接口中的所有方法才能实例化
      类可以实现接口
      接口也可以继承接口

    如何使用接口呢?
    实例:
    interface iguan{
    function eye();
    }
    class star implements iguan{
    function eye(){
    echo "罐罐苦读资治通鉴。";
    }
    }
    $guan=new star();
    $guan->eye();

    这里先定义一个接口iguan,接口中定义了一个方法eye,然后类star通过关键字implements来实现这个接口,而且它重写了这个eye的方法。
    我们创建这个类的对象,然后正常调用就可以了。
    执行结果为:
    罐罐苦读资治通鉴。



    类实现接口

    一个类可以实现多个接口,多个接口之间用逗号分开即可。
    一个类必须重写它所实现的接口里所有方法

    接口的作用就是它定义了一些实现的路径。
    ========================================================

    抽象类

    所谓抽象类就是比较抽象的类,这些类里至少包含一个抽象的方法,抽象方法不能给出实现,它和接口中的方法很相似,只能给出一个方法名。
    抽象类和抽象方法都被“abstract“来修饰,来说明,它们是”抽象的“。
    抽象类和普通类的区别之一就是抽象类不能被实例化,抽象类不是接口,它可以有自己的属性和不抽象的方法。

    总结:
    类前加 abstract 是抽象类
    方法前加 abstract 是抽象方法

    抽象类不能实例化
    抽象方法不能有方法体

    有抽象方法则此类必是抽象类
    抽象类内未必有抽象方法

    但是---即便一个抽象类内是具体的方法,但类是抽象的不能实例化。
    通过继承可以实例化子类。

    抽象类存在的意义      可以当做模版      可以当做接口    可以在被多个子类继承时统一方法名

     

    如果一个类使用abstract来修饰,则该类就是抽象类,如果一个方法被
    abstract修饰,则该方法就是抽象方法【抽象方法就不能有方法体   后面要用;结尾】
    抽象类不能够被实例化
    抽象类可以没有抽象方法.同时还可以有实现了的方法
    如果一个类中,只要有抽象方法,则该类必须声明为abstract
    如果某个类继承了一个抽象类,则要求这个类必须要实现那个抽象类的全部抽象方法
    不然无法new。
     
    ===========================================================

     
    抽象类与接口的区别

    抽象类仍然是一个类,它有自己的属性和方法,但是必须有一个抽象的方法。该方法不能有实现,而且必须被abstract修饰。
    接口不能有属性,而且所有方法都是不能实现的,它不需要用abstract修饰。

    一个子类只能实现继承一个抽象类,但是一个子类可以继承多个接口。
    接口可以有子接口,抽象类也可以有子抽象类。
  • 相关阅读:
    Kudu-Impala集成特性
    [转]IIS的各种身份验证详细测试
    [转]The NTLM Authentication Protocol and Security Support Provider
    [转]WxEmojiView
    [转]Redis 数据类型
    [转]a-mongodb-tutorial-using-c-and-asp-net-mvc
    [转]MongoDB 概念解析
    [转]flash.net.Socket
    [转]emailjs-smtp-client
    [转]jquerUI Dialog中隐藏标题栏的关闭"X"按钮
  • 原文地址:https://www.cnblogs.com/suiyuewuxin/p/5608517.html
Copyright © 2011-2022 走看看