Blogger Information
Blog 29
fans 1
comment 0
visits 23167
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP类与对象,设计类和抽象类,接口
阿心
Original
594 people have browsed it

类与对象

  1. <?php
  2. //类与对象
  3. //类成员方法
  4. //工作类
  5. class User
  6. {
  7. public $name='黄金左脚';
  8. public static $age=30;
  9. function Demo1()
  10. {
  11. //老方法不推荐这样写:
  12. //$user=new User();
  13. //echo $user->name;
  14. //新特性:直接使用PHP系统定好的$this->就可以了。
  15. echo $this->name;
  16. echo '<br>今年的年龄是:'. self::$age;//这种方式也不推荐。推荐使用Demo3()
  17. }
  18. //closuer 用于代表 匿名函数 的类.允许在匿名函数创建后对其进行更多的控制
  19. //可以限定类型(string $dep,Closure $closure)
  20. function Demo2($closure,$dep)//顺序跟传参一样
  21. {
  22. //添加私有属性(不推荐)
  23. //$deposit=50000;
  24. //global $deposit
  25. //新特性通过传参来实现(推荐)不过传参时至少需要两个参数。一个会报错
  26. echo $closure().$dep;
  27. }
  28. public static function Demo3()
  29. {
  30. echo self::$age;
  31. }
  32. }
  33. $user=new User();
  34. $user->Demo1();
  35. echo '<hr>';
  36. $have=function()
  37. {
  38. echo '有房有车,年薪:';
  39. };
  40. $deposit=500000;
  41. //这里传参的顺序需要注意下,还有只有一个参数好像也会出错
  42. $user->Demo2($have,$deposit);
  43. echo '<br>';
  44. $user->Demo3();

类成员访问控制:作用域

  1. <?php
  2. //类成员访问控制:作用域
  3. class User
  4. {
  5. public $name='王霸丹';
  6. //protected为受保护的,禁止外部访问
  7. protected $tel='13500135000';
  8. // private为私有的,禁止继承和外部访问
  9. private $birth='2020-02-20 20:20:02';
  10. //public static function stat();非抽象方法会报错
  11. //本类中可以访问本类中的任何方法
  12. public static $age=30;
  13. public function Demo1()
  14. {
  15. echo $this->birth;
  16. }
  17. protected function Demo4()
  18. {
  19. echo '我是单身汪';
  20. }
  21. }
  22. //extends继承 /// 多态
  23. class My extends User
  24. {
  25. protected $address='china';
  26. protected $bank=11001100;
  27. private $pass=123456;
  28. public function Demo2()
  29. {
  30. echo $this->name,'<br>',$this->tel,'<br>';
  31. //echo $this->birth;//birth是私有不被继承,所以不会被打印
  32. }
  33. public function Demo3()
  34. {
  35. echo '我的年龄是:',self::$age;
  36. echo "<br>目前:";
  37. $user=new User();
  38. $user->Demo4();
  39. echo "<br>过来N年后,我已经是:";
  40. static $age=60;
  41. echo $age,'现在卡号是:',$this->bank;
  42. echo $age,'现在卡号密码是:',$this->pass;
  43. //parent,它指的就是派生类在 extends声明中所指的基类的名字。这样做可以避免在多个地方使用基类的名字。
  44. echo '<br>';
  45. // 二类成员: 子类有权访问的父类成员类型, public, protected
  46. // 三种操作: 子类对父类的三种操作: 继承, 重写, 扩展
  47. // 1. 继承: 父类的二类成员自动成为子类的成员
  48. // 2. 重写: 覆写与父类/基类同名的成员(属性, 方法)
  49. // 3. 扩展: 子类添加自身的方法来增加/扩展父类的功能
  50. // 重写父类成员
  51. echo parent::Demo4().$this->address.parent::Demo1();
  52. }
  53. }
  54. $user=new User();
  55. $user->Demo1();
  56. echo '<br>';
  57. $my=new My;
  58. $my->Demo2();
  59. $my->Demo3();

最终方法和最终类 final

  1. <?php
  2. //最终方法和最终类 final
  3. //可以理解:final禁止某个了或方法被重写
  4. //final class User//这种方法就禁止了class Name里面的方法重写
  5. class User
  6. {
  7. public $age=30;
  8. public function Demo1()
  9. {
  10. // 打印类和方法
  11. echo __METHOD__,'<br>';
  12. }
  13. }
  14. class Name
  15. {
  16. public function Demo1()
  17. {
  18. // 打印类名和(类和方法名)
  19. echo __CLASS__.__METHOD__;
  20. }
  21. }
  22. $user = new User;
  23. $user->Demo1();
  24. $name=new Name;
  25. $name->Demo1();

抽象类

  1. <?php
  2. // 抽象类: 部分分离了" 设计(抽象类中完成)与实现(工作类中完成)"
  3. //抽象类不能被实例化,关键字“abstract”.语法:abstract function xx();
  4. //只要类里面存在一个抽象方法,这个类就叫抽象类
  5. abstract class Test
  6. {
  7. protected $age=30;
  8. protected function Deom1()
  9. {
  10. echo $this->age;
  11. }
  12. abstract protected function Demo2();
  13. }
  14. //Test是抽象类,所以不能被实例化(不能单独运行)
  15. //new Test;//报错为不能实例化
  16. //工作类同样可以是抽象类
  17. class Test1 extends Test
  18. {
  19. //实现类继承后必须实现抽象类.否则报错
  20. //继承后需要使用请改为public
  21. public function Demo2()
  22. {
  23. echo '测试下。。。';
  24. }
  25. }
  26. class Test2 extends Test1
  27. {
  28. }
  29. $test1=new Test1();
  30. $test1->Demo2();

接口

  1. <?php
  2. //接口:关键字:interface
  3. //完成分离:设计与实现;
  4. // 使用与类相似的语法: 抽象方法, 常量, 构造方法(魔术方法的一种)。 接口允许多继承
  5. //可以是单接口。也可以是多接口
  6. interface iUser
  7. {
  8. const NAME='阿蒙';
  9. //方法需要public
  10. public static function Demo1();
  11. }
  12. interface iName
  13. {
  14. public function Demo2();
  15. }
  16. //接口继承关键字implements
  17. //实现类
  18. class iUser1 implements iUser,iName
  19. {
  20. public static function Demo1()
  21. {
  22. echo '测试下。。';
  23. }
  24. public function Demo2()
  25. {
  26. echo '这是demo2';
  27. echo iUser::NAME;
  28. }
  29. }
  30. $iuser=new iUser1();
  31. $iuser->Demo1();
  32. $iuser->Demo2();
总结:刚开始写作业的时候碰到很多钉子,导致迟迟不能解决,迟迟不能交作业。等到研究明白了,才发现。这些作业确实是非常的简单。不过有一点,应该跟时间有关系,应该多敲一下代码涨点记性。要不然一看代码就懂,一写代码就忘。
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:其实很多时候, 是自己吓自己
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post