面向对象(一)类、成员、对象实例

OOP达到了软件工程的三个目标:重用性、灵活性和扩展性

OOP的三大特性:封装、继承、多肽

一、类

1、类名、变量名及函数名的命名规则相似。如果由多个单词组成,习惯上每个单词的首字母要大写。另外类名的定义也要具有一定的意义,不要随便由几个字母组成。

2、修饰类的关键字abstract、final等

3、成员属性或成员方法可以使用public、protected、private等关键字修饰

4、实例化对象

一个类可以实例化出多个对象,每个对象都是独立的,相当于在内存中开辟不同的空间存放每个对象。

$person = new Person();等号右边是创建的真正对象实例,被存储在堆内存段中;而等号左边则是对象的引用,被存储在栈内存段中

5、在类的成员方法里面,可以用 ->(对象运算符):$this->property(其中 property 是该属性名)这种方式来访问非静态属性。静态属性则是用 ::(双冒号):self::$property 来访问

6、当一个方法在类定义内部被调用时,有一个可用的伪变量 $this。特殊的对象引用$this就是在对象内部的成员方法中,代表‘本对象’的一个引用。

7、类的继承extends

一个类可以在声明中用 extends 关键字继承另一个类的方法和属性。PHP不支持多重继承,一个类只能继承一个基类;

被继承的方法和属性可以通过用同样的名字重新声明被覆盖。但是如果父类定义方法时使用了 final,则该方法不可被覆盖。可以通过 parent:: 来访问被覆盖的方法或属性。

当覆盖方法时,参数必须保持一致否则 PHP 将发出 E_STRICT 级别的错误信息。但构造函数例外,构造函数可在被覆盖时使用不同的参数。

<?php
class SimpleClass
{
    // 声明属性
    public $var = 'a default value';

    // 声明方法
    public function displayVar() {
        echo $this->var;
    }
}

class ExtendClass extends SimpleClass
{
    // Redefine the parent method
    function displayVar()
    {
        echo "Extending class\n";
        parent::displayVar();
    }
}

$extended = new ExtendClass();
$extended->displayVar();
/*
输出
Extending class
a default value
*/
?>

8、类常量

可以把在类中始终保持不变的值定义为常量。将类中的成员属性使用const关键字标识为常量,其访问的方式和静态成员一样,都是通过类名或在成员方法中使用self关键字访问,也不能用对象来访问

常量的值必须是一个定值,不能是变量。标识为常量的属性是只读的,不能重新赋值。所以在声明常量时一定要赋初值。

在定义和使用常量的时候不需要使用 $ 符号,而且常量名称一般都是大写的。

接口(interface)中也可以定义常量

<?php
class MyClass
{
    const constant = 'constant value';

    function showConstant() {
        echo  self::constant . "\n";
    }
}

echo MyClass::constant . "\n";

$class = new MyClass();
$class->showConstant();

echo $class::constant."\n"; // 自 PHP 5.3.0 起
?>

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值