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 2024-08-23 10:11  wilson'blog  阅读(102)  评论(0)    收藏  举报