Blogger Information
Blog 34
fans 0
comment 0
visits 22523
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
12月3日—面向对象的复习
曾龙宇
Original
566 people have browsed it

demo1

  1. <?php
  2. //OOP基本步骤
  3. // 1.创建类
  4. class Demo1{
  5. //2.添加类成员
  6. //在类中的变量和函数,和程序中的变量与函数有区别,添加了访问限制符
  7. //变量=>属性,函数=>方法,访问限制符 成员
  8. //创建属性
  9. public $name = '张三';
  10. public function getName(){
  11. $obj = new Demo1();
  12. return $obj->name;
  13. }
  14. }
  15. //3.访问类成员
  16. $obj = new Demo1();
  17. //访问属性,对象成员访问符:->
  18. echo $obj->name;
  19. echo $obj->getName();

demo2

  1. <?php
  2. // 1.创建类
  3. class Demo2{
  4. //2.添加类成员
  5. public $name = '张三';
  6. public $age = 25;
  7. public function getName(){
  8. //第一步:类的实例化:self是类名的引用,始终与当前的类名绑定
  9. return $this->name;
  10. }
  11. public function getAge(){
  12. return $this->age;
  13. }
  14. }
  15. //3.访问类成员
  16. $obj = new Demo2();
  17. echo $obj->name;
  18. echo $obj->getAge();

demo3

  1. <?php
  2. //1.创建类
  3. class Demo3{
  4. //2.添加类成员
  5. public $name;
  6. public $age;
  7. public function getInfo(){
  8. return '我是'.$this->name.',今年'.$this->age.'岁';
  9. }
  10. //构造方法:类实例的初始化,自动完成在类实例中创建过程中的操作
  11. public function __construct($name,$age){
  12. //1.初始化类成员
  13. $this->name = $name;
  14. $this->age = $age;
  15. //在类实例话是会被自动执行
  16. echo $this->getInfo();
  17. }
  18. }
  19. //3.访问类成员
  20. new Demo3('张三',25);

demo4

  1. <?php
  2. //访问控制,实现类的封装
  3. //1.创建类
  4. class Demo4{
  5. //2.添加类成员
  6. public $name;
  7. //如果不想让该属性在类的外部被访问,可以将该属性的访问控制符修改为:
  8. //private 私有成员 protected 受保护成员
  9. protected $age;
  10. public function getInfo(){
  11. return '我是'.$this->name.',今年'.$this->age.'岁';
  12. }
  13. //构造方法
  14. public function __construct($name,$age){
  15. $this->name = $name;
  16. $this->age = $age;
  17. }
  18. //外部无权访问,是为了防止非法访问,并不代表禁止访问
  19. //为这样的属性创建一个访问器方法,来过滤用户的访问请求
  20. public function getAge(){
  21. //仅允许用户是‘admin’的用户访问,其他访问返回:无权访问
  22. $user = $_GET['user']??'';
  23. if (isset($user)&&$user==='admin'){
  24. return $this->age;
  25. }else{
  26. return '无权访问';
  27. }
  28. }
  29. public function getRole(){
  30. return isset($this->role)?$this->role:'不存在该属性';
  31. }
  32. //魔术方法:__get($name)属性重载
  33. public function __get($name){
  34. //仅允许用户是‘admin’的用户访问,其他访问返回:无权访问
  35. $user = $_GET['user']??'';
  36. if (isset($user)&&$user==='admin'){
  37. return isset($this->name)?$this->name:'属性未定义';
  38. }else{
  39. return '无权访问';
  40. }
  41. }
  42. }
  43. //3.访问类成员
  44. $obj = new Demo4('张三',25);
  45. echo $obj->name;
  46. echo $obj->role;

demo5

  1. <?php
  2. //类的继承
  3. //1.创建类
  4. class Demo5{
  5. //2.添加类成员
  6. public $name;
  7. protected $age;
  8. public function getInfo(){
  9. return '我是'.$this->name.',今年'.$this->age.'岁';
  10. }
  11. //构造方法
  12. public function __construct($name,$age){
  13. $this->name = $name;
  14. $this->age = $age;
  15. }
  16. }
  17. class Demo5_1 extends Demo5{
  18. //当前自雷的自身属性
  19. private $sex;
  20. public function __construct($name, $age,$sex){
  21. parent::__construct($name, $age);
  22. $this->sex = $sex;
  23. }
  24. //重写父类中的方法
  25. public function getInfo(){
  26. return parent::getInfo().',性别是:'.$this->sex;
  27. }
  28. }
  29. //3.访问类成员
  30. $obj = new Demo5_1('张三',25,'男');
  31. echo $obj->getInfo();

demo6

  1. <?php
  2. //trait:代码复用方式,用来扩展当前类的功能
  3. //trait:当成一个公共方法库
  4. //trait:使用了类的定义的语法,但不是类,所以不能实例化
  5. trait Test{
  6. public function getInfo(){
  7. return '我是'.$this->name.',今年'.$this->age.'岁';
  8. }
  9. }
  10. //1.创建类
  11. //Demo6:宿主类
  12. class Demo6{
  13. //导入trait类
  14. use Test;
  15. //2.添加类成员
  16. public $name;
  17. protected $age;
  18. //构造方法
  19. public function __construct($name,$age){
  20. $this->name = $name;
  21. $this->age = $age;
  22. }
  23. }
  24. //trait:还可以用在类的继承上下文环境中
  25. class Demo6_1 extends Demo6{
  26. //当前自雷的自身属性
  27. private $sex;
  28. public function __construct($name, $age,$sex){
  29. parent::__construct($name, $age);
  30. $this->sex = $sex;
  31. }
  32. //重写父类中的方法
  33. public function getInfo(){
  34. return parent::getInfo().',性别是:'.$this->sex;
  35. }
  36. }
  37. // 优先级: 当前类中的同名方法 > trait类中的同名方法 > 父类中的同名方法
  38. //3.访问类成员
  39. $obj = new Demo6('张三',25);
  40. echo $obj->getInfo();
  41. $obj1 = new Demo6_1('李四',45,'男');
  42. echo $obj1->getInfo();

demo7

  1. <?php
  2. //接口:
  3. //对象的模板是类,类的模板是哪个呢?类的模板是接口
  4. //面向接口编程是最重要的编程思想之一,许多高级应用都严重依赖于它
  5. //接口是一种约定,定义了实现它的类中必须实现的方法
  6. //接口中没有方法的具体实现,所以不能实例化
  7. //接口:定义工作类中的方法原型
  8. interface iDemo{
  9. public function getInfo();
  10. public function hello();
  11. }
  12. class Demo7 implements iDemo{
  13. public $name;
  14. protected $age;
  15. public function getInfo(){
  16. return '我是'.$this->name.',今年'.$this->age.'岁';
  17. }
  18. public function hello(){
  19. return '大家好';
  20. }
  21. public function __construct($name,$age){
  22. $this->name = $name;
  23. $this->age = $age;
  24. }
  25. }
  26. //3.访问类成员
  27. $obj = new Demo7('张三','25');
  28. echo $obj->getInfo();
  29. echo $obj->hello();

demo8

  1. <?php
  2. //抽象类:有抽象方法,也是要实现的方法
  3. //接口全是抽象方法
  4. //共同之处:统统不能实例化,原因就是内部有抽象方法
  5. abstract class Chouxiang{
  6. //抽象方法
  7. abstract public function getInfo();
  8. public function hello(){
  9. return '大家好';
  10. }
  11. }
  12. //1.创建类
  13. //Demo8:工作类
  14. class Demo8 extends Chouxiang {
  15. public $name;
  16. protected $age;
  17. public function getInfo(){
  18. return '我是'.$this->name.',今年'.$this->age.'岁';
  19. }
  20. public function __construct($name,$age){
  21. $this->name = $name;
  22. $this->age = $age;
  23. }
  24. }
  25. //3.访问类成员
  26. $obj = new Demo8('张三','25');
  27. echo $obj->getInfo();
  28. echo $obj->hello();

手抄作业


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