随笔 - 72,  文章 - 0,  评论 - 1,  阅读 - 22557
复制代码
 1     class Animal{                         //使用class 关键字定义 类名称
 2             
 3           public $name = 'bird';          //定义public类型变量
 4           public $age = '1';
 5           public function eat(){          //定义public类型方法
 6 
 7             echo ' is eatting';
 8           }
 9 
10     }
11 
12     $bird = new Animal;                 //实例化 Animal类后赋给变量$bird
13 
14     echo $bird->name ;                  //打印 $bird中的name变量,注意->引用后无需再使用%符号
15     echo $bird->eat();                  //调用 $bird中的eat方法
复制代码
运行后回显如下:
[Running] D:\ceshi.test\5.php"
bird is eatting
 
现在稍加变化,将eat方法中传入一个变量,同时再次调用方法时传入一个值,如下:
复制代码
  class Animal{
            
          public $name = 'bird';
          public $age = '1';
          public function eat($name){   //传入一个变量

            echo $name.' is eatting';
          }

    }

    $bird = new Animal;
    echo $bird->eat('fox');     //调用时传入一个fox
复制代码

此时回显结果如下:

[Running] D:\ceshi.test\5.php"
fox is eatting
 
上面的例子是调用了类外面传入的内容,此时若要调用类中的变量就需要用到this关键字了,如下:
 
复制代码
    class Animal{
            
          public $name = 'bird';
          public $age = '1';
          public function eat(){

            echo $this->name.' is eatting';  //此时使用$this关键字加上->的方式调用类中的变量name
          }

    }

    $bird = new Animal;

    //echo $bird->name ;
    echo $bird->eat();
复制代码

回显如下:

[Running] D:\ceshi.test\5.php"
bird is eatting
 
接下来,我们继续new一个fox对象,然后在外面把name的值修改下
复制代码
    class Animal{
            
          public $name = 'bird';
          public $age = '1';
          public function eat(){

            echo $this->name.' is eatting';
          }

    }

    $bird = new Animal;

    echo $bird->eat();

    $fox = new Animal;      //new 出一个fox
    $fox->name='fox';       //在外面直接修改name属性的值,注意调用的格式
    echo $fox->eat();
复制代码

此时回显如下:

[Running] D:\ceshi.test\5.php"
bird is eattingfox is eatting
 
由此可见
每个通过类实例化后的实例都是独立的,每个实例都拥有自己的内存空间。

在编程中,实例指的是一个类的具体对象。理解实例可以从以下几个方面入手:

  1. 类和对象:类是一个模板或蓝图,定义了对象的属性和方法。实例则是这个模板的一个具体实现,包含了实际的数据。

  2. 创建实例:通过实例化(使用 new 关键字),你可以创建一个类的对象,并将其用于存储数据和调用方法。

  3. 独立性:每个实例都是独立的,具有自己的属性值。虽然多个实例可以使用相同的类定义,但它们的状态和行为是独立的。

  4. 实用性:实例化允许你创建和操作多个对象,每个对象可以拥有不同的属性值和状态,提供了灵活性和重用性。

简单来说,实例就是类的一个实际化身,用来存储数据和执行定义在类中的操作。

 
访问控制

1. public

  • 定义: public 属性或方法可以被类的任何代码访问,无论是在类内部还是外部。
  • 使用场景: 当你希望某个属性或方法对所有代码都是可见和可访问时,使用 public

2. private

  • 定义: private 属性或方法只能在定义它们的类内部访问。外部代码或子类无法直接访问这些成员。
  • 使用场景: 当你需要将某些数据或方法隐藏在类内部,以防止外部直接修改或调用时,使用 private

3. protected

  • 定义: protected 属性或方法只能在定义它们的类以及它的子类中访问。它们对外部代码不可见。
  • 使用场景: 当你希望允许类的子类访问某些属性或方法,但不希望它们被外部代码直接访问时,使用 protected
 下面演示如何获取protected中的变量,以及如何修改
复制代码
    class Animal{
            
          protected $name = 'bird';
          public $age = '1';
   
    }

    $bird = new Animal;

    echo $bird->name;
复制代码

此时运行时会报错的,因为变量类型是protected ,此时可以添加一个方法去获取name变量

复制代码
  class Animal{
            
          protected $name = 'bird';
          public $age = '1';
          public function getname(){  //添加getname方法来实现访问protected变量

                return $this->name;

          }
    }

    $bird = new Animal;

    echo $bird->getname();
复制代码

此时可以打印出bird,如果要修改name变量,可以再增加一个setname方法

复制代码
  class Animal{
            
          protected $name = 'bird';
          public $age = '1';
          public function getname(){

                return $this->name;

          }
          public function setname($newname){  //增加一个setname的方法用于修改name的值

             $this->name=$newname;   

      }
    }

    $bird = new Animal;


    $bird->setname('fox');
    echo $bird->getname();
复制代码

回显如下:

[Running] D:\ceshi.test\5.php"
fox
posted on   wilson'blog  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示