Blogger Information
Blog 31
fans 0
comment 0
visits 18241
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP第17课-面向对象编程-九期线上班
Content っ
Original
563 people have browsed it

1.编程代码,抄写课堂案例,也可以自定义(选做)

//oop创建规则-声明类,创建类方法类成员,实例化类好调用类方法

  1. <?php
  2. //声明创建类
  3. class Demo1{
  4. //定义类成员
  5. public $site = 'jason.io';
  6. public $role = '学生';
  7. //定义类方法
  8. public function getSite(){
  9. return $this->site .'欢迎您';
  10. }
  11. public function getRole(){
  12. return $this->role;
  13. }
  14. }
  15. //实例化类
  16. $d1 = new Demo1();
  17. //调用类方法
  18. echo $d1->getSite();
  19. echo $d1->getRole();

demo2.php构造函数

  1. <?php
  2. //构造函数
  3. class Demo2{
  4. public $site;
  5. public $role;
  6. public function __construct($site,$role)
  7. {
  8. $this->site = $site;
  9. $this->role = $role;
  10. $this->log();
  11. }
  12. public function log(){
  13. echo $this->site . $this->role;
  14. }
  15. }
  16. //实例化调用类
  17. $obj = new Demo2('jason.cn','码农网');

demo3.php访问控制,实现类的封装

  1. <?php
  2. //访问控制,实现类的封装
  3. class Demo3{
  4. public $user;
  5. private $role;
  6. public function __construct($user,$role)
  7. {
  8. $this->user = $user;
  9. $this->role = $role;
  10. }
  11. public function __get($name)
  12. {
  13. if (isset($this->user) && $this->user == 'admin'){
  14. echo '我其实是一个:'.$this->role;
  15. }else{
  16. echo '您无权查看';
  17. }
  18. }
  19. }
  20. $d3 = new Demo3('admin','超人');
  21. $d3->role;

demo4.php类的继承

  1. <?php
  2. //类的继承
  3. class Demo4{
  4. public $name;
  5. protected $role;
  6. public function __construct($name,$role)
  7. {
  8. $this->name = $name;
  9. $this->role = $role;
  10. }
  11. public function getInfo(){
  12. return '我的名字:'.$this->name .'职业:'.$this->role;
  13. }
  14. }
  15. //继承,关键字extends
  16. class Demo4_1 extends Demo4{
  17. public $email;
  18. //构造函数
  19. public function __construct($name, $role,$email)
  20. {
  21. //先调用父类的构造函数
  22. parent::__construct($name,$role);
  23. $this->email=$email;
  24. }
  25. //重写父类函数
  26. public function getInfo()
  27. {
  28. echo parent::getInfo() .'我的邮箱是:'.$this->email;
  29. }
  30. }
  31. $d4 = new Demo4_1('大狗','超人','abc@qq.com');
  32. $d4->getInfo();

demo5.phptrait 解决PHP中不能多继承的问题,代码复用问题,可以当成一个公共的类库,因为不是对象,所以不能实例化

  1. <?php
  2. //trait 解决PHP中不能多继承的问题,代码复用问题,可以当成一个公共的类库,因为不是对象,所以不能实例化
  3. trait Test{
  4. public function getInfo(){
  5. echo '这是trait类的getInfo方法';
  6. }
  7. }
  8. //创建基类
  9. class Demo5{
  10. use Test;
  11. public $site;
  12. protected $name;
  13. public function __construct($site,$name)
  14. {
  15. $this->name = $name;
  16. $this->site = $site;
  17. }
  18. public function getInfo(){
  19. echo '这是父类的getInfo方法';
  20. }
  21. }
  22. class Demo5_1 extends Demo5{
  23. // use Test;
  24. public $email;
  25. public function __construct($site, $name,$email)
  26. {
  27. parent::__construct($site, $name);
  28. $this->email = $email;
  29. }
  30. public function getInfo(){
  31. echo '这是本类的getInfo方法';
  32. }
  33. }
  34. //实例化
  35. $d5 = new Demo5_1('jason.io','大狗','a@qq.com');
  36. $d5->getInfo();
  37. //tip优先级(本类没有引入use trait的情况)-本类->父类->trait
  38. //tip优先级(本类引入use trait的情况)-本类->trait->父类

demo6.php接口

  1. <?php
  2. //接口
  3. interface iDemo{
  4. public function getInfo();
  5. public function hello();
  6. }
  7. class Demo6 implements iDemo {
  8. public $name;
  9. public $email;
  10. public function getInfo()
  11. {
  12. return '我的名字:'.$this->name.'邮箱:'.$this->email;
  13. }
  14. public function hello()
  15. {
  16. return '大家好呀';
  17. }
  18. public function __construct($name,$email)
  19. {
  20. $this->name = $name;
  21. $this->email = $email;
  22. }
  23. }
  24. $d6 = new Demo6('大狗','d@qq.com');
  25. echo $d6->getInfo() .'<hr>';
  26. echo $d6->hello() .'<hr>';

demo7.php抽象类

  1. <?php
  2. abstract class ChouXiang{
  3. //抽象方法
  4. abstract function getInfo();
  5. //已经实现方法
  6. public function hello(){
  7. return '大家晚上好呀';
  8. }
  9. }
  10. class Demo7 extends ChouXiang{
  11. public $name;
  12. public $role;
  13. public function getInfo()
  14. {
  15. return '我的名字:'.$this->name.'职业:'.$this->role;
  16. }
  17. public function __construct($name,$role)
  18. {
  19. $this->name = $name;
  20. $this->role = $role;
  21. }
  22. }
  23. $d7 = new Demo7('大狗','养猪');
  24. echo $d7->getInfo() .'<hr>';
  25. echo $d7->hello() .'<hr>';

2. 手抄课堂笔记: 1203.md (必做)


总结

  1. 1.今天学习了面向对象,面向对象总体分为三步,声明定义类->创建类函数类方法->实例化类和调用类方法函数;
  2. 2.学习了构造函数,构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作
  3. 3.学习类里面的修饰关键词,public公开的,谁都可以调用,protected受保护的,只允许本类和子类调用,private私有的,只允许本类调用
  4. 4.学习了类的继承,关键字extends,继承可以省去重复的多余的代码,自动继承父类方法
  5. 5.学习trait 解决PHP中不能多继承的问题,代码复用问题,可以当成一个公共的类库,因为不是对象,所以不能实例化
  6. 6.学习了接口和抽象类,不同处
  7. 抽象类:有抽象方法(未完成方法),也有已经实现方法
  8. 接口:全部是抽象方法
  9. 接口和抽象类相同处:都不能实例化,因为内部有抽象方法原因
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