接口:

  1. JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
  2. 抽象类是一种抽象的类,接口是一种特殊的抽象类。
  3. 抽象类和接口中都有抽象方法
  4. 抽象类和接口都不能实例化对象
  5. 抽象类和接口使用作用一样,都是规范
  6. 成员方法只能是抽象方法,修饰符默认且必须是是(public abstract)类型,abstract关键字可以省略
  7. 接口中的成员属性,必须是常量(不能有变量)
  8. 所有的权限必须是公有的(public
  9. 可以使用extends继承自另一个接口,(接口和接口只有扩展新抽象方法,没有覆盖的关系)
  10. 可以使用一个类来实现接口中的全部方法,也可以使用一个抽象类,来实现接口中的部分方法
  11. (类与接口,抽象类与接口 =>有实现接口中的抽象方法)
  12. 类(抽象类)实现接口使用关键字 implements
  13. 多个接口中间逗号隔开

样式代码:

  1. <?php
  2. // 声明
  3. interface iCon
  4. {
  5. // 接口常量
  6. const APP_NAME = '天猫商城';
  7. // 公共抽象方法,没有实现过程
  8. public static function d1(...$args): string;
  9. // 构造方法
  10. public function __constract(...$args);
  11. }
  12. // 实现类
  13. class User_Con implements iCon
  14. {
  15. // 在实现类中必须将接口中声明的抽象方法全部实现了
  16. public static function d1(...$args): string
  17. {
  18. return print_r($args,true);
  19. }
  20. // 构造方法
  21. public function __constract(...$args)
  22. {
  23. return new static;
  24. }
  25. }
  26. $obj = new User_Con();
  27. echo User_Con::APP_NAME, '<hr>';
  28. // 尽可能直接用接口来访问类常量
  29. echo iCon::APP_NAME, '<hr>';
  30. // 实例可以调用 静态方法,但是不能调用静态属性
  31. echo $obj->d1(' 商品信息','商品价格','商品数量','原价','现价'),'<hr>';
  32. // 尽可能用类来调用静态方法
  33. echo User_Con::d1(' 商品信息','商品价格','商品数量','原价','现价'),'<hr>';

效果预览:

抽象类:

  1. 如果一个类中有一个方法是抽象方法,则这个类是抽象类,如果声明一个抽象类,必须使用 abstract 来修饰
  2. 只能单继承;成员变量可以是常量也可以是变量;
  3. 与普通类一样,有构造方法,但是不能实例化。构造方法的作用是子类继承抽象方法后进行父类数据的初始化;
  4. 成员方法既可以是抽象的,也可以是非抽象的;但所表述的意义不同:抽象方法是强制要求子类实现的,非抽象方法可以被子类继承,提供搞代码的复用性;

abstract关键字和哪些关键字有冲突

  1. private:私有则不能继承,那么就不能被重写
  2. final:定义为final则不能被继承和重写
  3. static:无意义,抽象方法无方法体

样式代码:

  1. <?php
  2. // 抽象类
  3. abstract class Conso
  4. {
  5. public function find()
  6. {
  7. // ...
  8. }
  9. public function init()
  10. {
  11. // ...
  12. }
  13. // 抽象方法
  14. abstract public function __construct();
  15. }
  16. // 抽象类必须通过它的子类才可以使用
  17. class UserConso extends Conso
  18. {
  19. // 抽象类的实现类(子类)必须将抽象类的抽象方法实现了
  20. public function __construct()
  21. {
  22. echo "我靠 放假了<hr>";
  23. }
  24. }
  25. // 抽象类必须通过它的子类才可以使用
  26. class Conso_Model extends Conso
  27. {
  28. // 抽象类的实现类(子类)必须将抽象类的抽象方法实现了
  29. public function __construct()
  30. {
  31. echo "哎呦 作业还没写<hr>";
  32. }
  33. }
  34. new UserConso();
  35. new Conso_Model();

效果预览:

接口与抽象类的区别与联系:

  1. 语法层面:
  2. 抽象类可以有构造方法,接口中不能有构造方法;
  3. 抽象类中可以有普通成员变量,接口中没有普通成员变量(默认public static final );
  4. 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的;
  5. 抽象类中的抽象方法的可以是publicprotected的,但接口中的抽象方法只能是public的;
  6. 抽象类中可以包含静态方法,接口中不能包含静态方法;
  7. 抽象类中可以包含任意访问权限的静态成员变量,但接口中定义的变量只能是public static final类型;
  8. 一个类可以实现多个接口,但只能继承一个抽象类;
  9. 思想层面:
  10. 抽象类与子类为”is a”关系,它抽象出事物的共同本质特征,可单一继承;
  11. 接口与实现类为”like a”关系,它定义并规范了个性化的功能特征,可多重继承(实现);
  12. 抽象类和接口都不能被实例化,两种都是java实现抽象的方式;

更多相关文章

  1. jQuery 中常用的 DOM 操作以及使用 jQuery 完成跨域请求操作
  2. 初识 jQuery 与$()工厂函数的四种用法,四种好用的 getter/setter
  3. 通俗易懂!Java 线程池详解
  4. 太硬核了!一文爆肝所有设计模式!
  5. Jackson,最牛掰的 Java JSON 解析器
  6. js 中数组常用方法介绍以及 JSON 对象的两个方法展示和跨域请求
  7. 常用的字符串方法介绍以及使用事件代理实现一个简单的留言板
  8. php学习笔记(接口与抽象类的区别与联系)
  9. PHP接口与抽象类实例

随机推荐

  1. android dialog样式
  2. 一个挺好用的花样开源神器
  3. Android 自音乐播放器源代码
  4. Android RadioGroup RadioButton 自定义
  5. android ImageView 显示本地图片
  6. android屏幕截图
  7. 【Android】Face Recognition on Android
  8. android技术文章网址
  9. Android TabHost详解
  10. Android7.0中文文档(API)-- ZoomButtonsCon