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.
每个通过类实例化后的实例都是独立的,每个实例都拥有自己的内存空间。
在编程中,实例指的是一个类的具体对象。理解实例可以从以下几个方面入手:
-
类和对象:类是一个模板或蓝图,定义了对象的属性和方法。实例则是这个模板的一个具体实现,包含了实际的数据。
-
创建实例:通过实例化(使用
new
关键字),你可以创建一个类的对象,并将其用于存储数据和调用方法。 -
独立性:每个实例都是独立的,具有自己的属性值。虽然多个实例可以使用相同的类定义,但它们的状态和行为是独立的。
-
实用性:实例化允许你创建和操作多个对象,每个对象可以拥有不同的属性值和状态,提供了灵活性和重用性。
简单来说,实例就是类的一个实际化身,用来存储数据和执行定义在类中的操作。
访问控制
1. public
- 定义:
public
属性或方法可以被类的任何代码访问,无论是在类内部还是外部。 - 使用场景: 当你希望某个属性或方法对所有代码都是可见和可访问时,使用
public
。
2. private
- 定义:
private
属性或方法只能在定义它们的类内部访问。外部代码或子类无法直接访问这些成员。 - 使用场景: 当你需要将某些数据或方法隐藏在类内部,以防止外部直接修改或调用时,使用
private
。
3. 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
分类:
PHP8
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)