Blogger Information
Blog 19
fans 0
comment 0
visits 16173
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php基础类的访问权限、类继承、抽象类、接口类
῀℡῀ᵒᵐᵍᵎᵎᵎ
Original
1012 people have browsed it

1.类访问控制

按访问权限分类

序号 名称 关键字 类外部 类内部 类继承上下文 描述
1 公开成员 public 允许 允许 允许 默认
2 受保护成员 protected 禁止 允许 允许 封装
3 私有成员 private 禁止 允许 禁止 封装

1 public、类继承

1.1public

  • 这个就是没有限制的,公有的

    1.1.1代码演示

    1. <?php
    2. //public公共的
    3. class Person{
    4. public $name = 'misszhu'; //此处不定义默认值,那么默认是空null
    5. public $age = 18;
    6. public function say() {
    7. echo '我的名字是'. $this->name. '今年'. $this->age.'岁';
    8. }
    9. }
    10. $misszhu = new Person();
    11. // $misszhu -> name='misszhang';//public这种情况下名字是可以去更改的
    12. //echo $misszhu -> say();
    13. //在public下$name/$age都是可以在外部更改的
    14. $misszhu -> name='misszhang';
    15. $misszhu -> age='21';
    16. echo $misszhu -> say();

    1.2类继承

  • 这时候的类继承是没有显示的

1.2.1代码演示

  1. <?php
  2. //类的继承
  3. //子类共享父类的属性和方法(protected/public)
  4. //php中只支持单继承
  5. class Person{
  6. public $name; //此处不定义默认值,那么默认是空null
  7. public $age;
  8. public function __construct($name, $age)
  9. {
  10. $this->name=$name;
  11. $this->age=$age;
  12. }
  13. public function say()
  14. {
  15. echo '我的名字是'. $this->name. '今年'. $this->age.'岁';
  16. }
  17. public function demo()
  18. {
  19. echo '这里是demo';
  20. }
  21. }
  22. class Chiness extends Person{
  23. protected $sex;
  24. public function __construct($name, $age, $sex)
  25. {
  26. $this->name=$name;
  27. $this->age=$age;
  28. $this->sex=$sex;
  29. }
  30. //也是可以重写的
  31. }
  32. $misszhu = new Chiness($name='misszhang', $age='19', $sex='女');
  33. $misszhu -> say();
  34. var_dump($misszhu);

1.2.2演示截图


2 protected、类继承

2.1protected

  • 受保护的

    2.1.1代码演示

  1. <?php
  2. //protected:受保护的
  3. class Person{
  4. public $name = 'misszhu'; //此处不定义默认值,那么默认是空null
  5. protected $age = 18;
  6. public function say() {
  7. echo '我的名字是'. $this->name. '今年'. $this->age.'岁';
  8. }
  9. }
  10. $misszhu = new Person();
  11. $misszhu -> name='misszhang';//public这种情况下名字是可以去更改的
  12. $misszhu -> age='28';//受保护的外部不能更改,会报错
  13. $misszhu -> say();

2.1.2演示截图

2.2.1 类继承

  1. <?php
  2. //类的继承
  3. //子类共享父类的属性和方法(protected/public)
  4. //php中只支持单继承
  5. class Person{
  6. public $name='misszhu'; //此处不定义默认值,那么默认是空null
  7. protected $age='18';
  8. public function say()
  9. {
  10. echo '我的名字是'. $this->name. '今年'. $this->age.'岁';
  11. }
  12. public function demo()
  13. {
  14. echo '这里是demo';
  15. }
  16. }
  17. class Chiness extends Person{
  18. }
  19. $misszhu = new Chiness();
  20. //$misszhu -> age = 21;
  21. //$misszhu -> eat();
  22. $misszhu -> say();

2.2.2演示截图

  • 这时候是可以继承父类的

    2.3.1 但在外部能不能操作 代码演示

  1. <?php
  2. //类的继承
  3. //子类共享父类的属性和方法(protected/public)
  4. //php中只支持单继承
  5. class Person{
  6. public $name='misszhu'; //此处不定义默认值,那么默认是空null
  7. protected $age='18';
  8. public function say()
  9. {
  10. echo '我的名字是'. $this->name. '今年'. $this->age.'岁';
  11. }
  12. public function demo()
  13. {
  14. echo '这里是demo';
  15. }
  16. }
  17. class Chiness extends Person{
  18. }
  19. $misszhu = new Chiness();
  20. $misszhu -> age = 21;
  21. //$misszhu -> eat();
  22. $misszhu -> say();

2.3.2演示截图

  • 演示报错说明不能在外操作

3 private、类继承

3.1代码演示

  1. <?php
  2. //类的继承
  3. //子类共享父类的属性和方法(protected/public)
  4. //php中只支持单继承
  5. class Person{
  6. public $name='misszhu'; //此处不定义默认值,那么默认是空null
  7. private $age='18';
  8. public function say()
  9. {
  10. echo '我的名字是'. $this->name. '今年'. $this->age.'岁';
  11. }
  12. public function demo()
  13. {
  14. echo '这里是demo';
  15. }
  16. }
  17. class Chiness extends Person{
  18. public function eat(){
  19. echo $this->age;
  20. }
  21. }
  22. $misszhu = new Chiness();
  23. $misszhu -> say();

3.1.1演示截图

  • 证明类的内部是可以搞的

3.2.2 那么子类的内部能不能搞呢 代码演示

  1. <?php
  2. //类的继承
  3. //子类共享父类的属性和方法(protected/public)
  4. //php中只支持单继承
  5. class Person{
  6. public $name='misszhu'; //此处不定义默认值,那么默认是空null
  7. private $age='18';
  8. public function say()
  9. {
  10. echo '我的名字是'. $this->name. '今年'. $this->age.'岁';
  11. }
  12. public function demo()
  13. {
  14. echo '这里是demo';
  15. }
  16. }
  17. class Chiness extends Person{
  18. public function eat(){
  19. echo '我的名字是'. $this->name. '今年'. $this->age.'岁';
  20. }
  21. }
  22. $misszhu = new Chiness();
  23. $misszhu -> eat();

3.3.3演示截图

  • 截图表示没有报错,但是age没有继承下来,说明子类继承父类就不能继承父类私有的

抽象类的作用与实现

序号 名称 关键字 具体实现
抽象成员 abstract
  • 抽象类不能被实例化,同样方法也没有实现,只是提供方法声明,没有具体实现。抽象类只能作为其他类的父类使用。抽象类使用abstract关键字来声明

抽象类代码演示

  1. <?php
  2. abstract class Person{
  3. abstract function chiness($name,$age,$money);
  4. }
  5. class Person1 extends Person{
  6. function chiness($name,$age,$money)
  7. {
  8. echo "我的名字是:" . $name, "我现在是:" . $age. "岁了", "我兜兜里面有:" . $money."元";
  9. }
  10. }
  11. class Person2 extends Person{
  12. function chiness($name,$age,$money)
  13. {
  14. echo "我的名字是:" . $name, "我现在是:" . $age. "岁了", "我兜兜里面有:" . $money."元";
  15. }
  16. }
  17. $chiness1 = new Person1();
  18. $chiness2 = new Person2();
  19. $chiness1->chiness('zhu老师','42','1000000');
  20. echo '<hr/>';
  21. $chiness2->chiness('小zhou','27','1');

抽象类演示截图


4 类的重载和调用父类方法 代码演示

  1. <?php
  2. class Person{
  3. public $name = 'misszhu'; //此处不定义默认值,那么默认是空null
  4. public $age = 42;
  5. public function say() {
  6. echo '我的名字是'. $this->name. '今年'. $this->age.'岁';
  7. }
  8. }
  9. class Chiness extends Person{
  10. public function sex()
  11. {
  12. //调用父类的方法,如果自己有方法就用自己的方法
  13. parent::say();
  14. }
  15. //类的重载,你如果觉得父类的不够先进,你也可以自己重新写
  16. public $eat='肉';
  17. public function eat()
  18. {
  19. echo '我的名字是'. $this->name. '今年'. $this->age.'岁', '我的爱好是喜欢吃'.$this->eat;
  20. }
  21. }
  22. $misszhu = new Chiness();
  23. echo $misszhu -> sex();
  24. echo '<hr>';
  25. echo $misszhu -> eat();

4.1演示截图


5 php 接口类的使用

  1. <?php
  2. interface iUser {
  3. const NAME = '接口类';
  4. public static function myfun(); //抽象方法
  5. }
  6. class User extends iUser
  7. {
  8. protected static $name = '小zhou';
  9. public static function myfun()
  10. {
  11. return $this->name.'正在学习'.iUser::NAME;
  12. }
  13. }
  14. echo User::myfun();

学习总结

有点绕,很多还没有总结到

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