博客列表 >PHP第17课-面向对象编程-九期线上班

PHP第17课-面向对象编程-九期线上班

Content っ
Content っ 原创
2019年12月07日 18:41:16562浏览

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. 接口和抽象类相同处:都不能实例化,因为内部有抽象方法原因
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议