php创建animal类公有成员,11月26日作业: 1. 创建类、实例化、命名空间、类成员、类方法(手写)...

11月26日作业:

创建类、实例化、命名空间、类成员、类方法(手写)

构造方法

5e315035399e5a029b84bc36f3cee247.png

:-: 一、创建类

类不好理解,因为概念太抽象。

先说一个比较抽象的,比如动物是一个类,而兔子、猪、猫狗,都是动物类的实例化对象。

类就是一个分类,一个清单。这个类有什么,通过这个类,创建出对象。

对象不是凭空出来的,都是通过类创建出来的。所以咱们是先写类,在创建对象。

创建类

class Animal{

}

调用类(实例化)

$monkey = new Animal(); // 猴子

$rabbit = new Animal(); // 兔子

[danger] 备:类如果只能使用一次,那我们没必须用类,每次直接写代码就可以了。所以类可以实例化多次(N次),次数无限制。

同一个类实例化出来,它们是不一样的

var_dump($monkey == $rabbit);

echo ‘
‘;

var_dump($monkey === $rabbit);

echo ‘
‘;

检测对象是否是类的实例

var_dump($monkey instanceof Animal);

echo ‘
‘;

:-: 二、类属性

关键词: 类属性, 访问限制符, 动态属性

在类里直接写代码,是错误的

错误示例

class Animal{

echo 111;

}

类 是一个类型的集合,它里面有成员的。

类里成员有两种:属性(变量)和行为(方法)。任何类,都有属性和行为。

1、属性(变量)

class People{

$name = ‘杨幂’; //会报错,必须有修饰符

$age = 31; //会报错,必须有修饰符

// 属性 设置了初始值

public $name = ‘杨幂’;

public $age = 31;

}

外部访问:需要通过访问限定符、或修饰符

$yangmi = new People;

echo $yangmi->name;

在类中声明属性变量时,设置它的作用域

作用域(修饰符):目前我们先学习public

public 公有的,类内,类外,子类都是可访问的

protected 受保护的,类内,子类都可以访问

private 私有的,只能类内访问

属性重新赋值

$yangmi->name = ‘欧阳克’;

$yangmi->age = 18;

echo $yangmi->name.$yangmi->age;

2、行为(方法)

关键词: self, $this

每个方法里,都带有$this,用作调用自己类的属性和方法

class People{

// 属性

public $name = ‘杨幂’;

public $age = 31;

// 方法,默认就是public ,不加也是

public function getInfo(){

echo ‘姓名:杨幂,年龄:31’;

return ‘姓名:杨幂,年龄:31’;

}

// 方法

public function getInfo1(){

// self : 当前类

$obj = new self();

// 输出对象属性

return ‘姓名: ‘ .$obj->name .’, 年龄: ‘ . $obj->age . ‘
‘;

}

// 方法

public function getInfo2(){

// 因为该方法必须通过对象调用,所有没必要在类中实例化

// 直接引用该类的实例化对象即可

// 在类中使用伪变量: “$this” 引用当前类的实例

// $this = new self(); 相当于先执行了这条语句,尽管你不需要这样做

return ‘姓名: ‘ .$this->name .’, 年龄: ‘ . $this->age . ‘
‘;

}

// 方法

public function getInfo3(){

// 当前类

$obj = new People();

$obj->name = ‘欧阳克’;

$obj->age = 18;

// 输出对象属性

return ‘姓名: ‘ .$obj->name .’, 年龄: ‘ . $obj->age . ‘
‘;

}

}

// 类实例化

$yangmi = new People();

echo $yangmi->getInfo();

echo $yangmi->getInfo1();

echo $yangmi->getInfo2();

echo $yangmi->getInfo3();

// 查看类中定义的对象方法: public 才会显示出来

$methods = get_class_methods(‘People’);

echo ‘

‘.print_r($methods,true);

echo ‘


‘;

:-: 三、构造方法(魔术方法)

构造方法是类中的特殊方法,在类实例化时会被自动调用,可用来初始化对象成员

调用类的时候,立即执行构造方法,第一个执行的方法。方法的没有位置的先后顺序

构造方法: public function construct(){…} ,也可以跟类名一样的方法

class People{

// 属性

public $name;

public $age;

// 构造方法

public functionconstruct($name, $age){

echo ‘开始执行’;

$this->name = $name;

$this->age = $age;

}

// 方法

public function getInfo(){

return ‘姓名: ‘ .$this->name .’, 年龄: ‘ . $this->age . ‘
‘;

}

}

// 实例化

$obj = new People(‘杨幂’,31);

echo $obj->getInfo();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值