PHP面向对象编程 面向对象的高级实践

本文介绍了PHP面向对象的基础概念,包括继承、访问控制修饰符、静态关键字的使用方法,final关键字的作用,以及如何通过parent、self和static关键字访问类成员。此外,还探讨了接口和抽象类的基本用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、继承的概念:
使用extends关键字继承,只能实现单继承

2、访问控制修饰符:
private protected public

3、Static(静态)关键字:

1、在类定义中访问静态成员的时候,不是使用this,而是使用self关键字后者static后面跟着::操作符,注意,在访问静态成员的时候,::后面需要跟着$符号
2、定义函数的时候,函数名不需要使用$开头,如  public function run(){}
3、在类外部的时候,可以通过类名和::来访问到
4、在子类中访问到父类中的static修饰的属性的时候,使用parent::变量名访问
echo parent::$username;
<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2016/12/16
 * Time: 15:21
 */

class Person{
    //使用static关键字定义
    public  static $TheType="人类";
    public $name;
    public function run($food){
        echo   $this->name."吃了".$food;
    }
    //定义函数的方法名的时候不需要$
    public static function changeType($type){
    //在方法内部使用self::方式访问静态成员变量,需要$
        self::$TheType=$type;
}
}

class Man extends  Person{


}

class Woman extends Person{

}

$wyh=new Man();
$tyf=new Woman();
//在外部调用的时候也需要使用::来调用静态成员方法和变量
$wyh::changeType("human");
echo $wyh::$TheType;
echo $tyf::$TheType;

4、final关键字:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2016/12/17
 * Time: 9:50
 */
//final class BaseClass  如果final关键字定义在类上面,那么此类不能被继承
class BaseClass{
//使用final关键字在方法上,那么此方法不能被重写
   final  public   function test(){
        echo "BaseClass的test方法";
    }

    public function test1(){
        echo "BaseClass的test1方法";

    }
}
class ChildClass extends BaseClass{
    public function test(){
        echo "ChildClass的test方法";
         //使用parent::也可以访问到父类中对应的方法
        parent::test();
    }
}

$child_1=new ChildClass();
$child_1->test();

5、数据访问小结:

1、parent关键字可以用于调用父类中被子类重写了的方法
2self关键字可以用于访问类自身的成员变量,可以用于访问自身的静态成员和类常量,不能用于访问类自身的属性,使用常量的时候不需要在常量名称前面添加$符3、static关键字用于访问类自身定义的静态成员,访问静态属性的时候需要在属性前面添加$符

6、接口:
使用interface关键字来定义接口,类使用implements关键字实现接口

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2016/12/17
 * Time: 10:14
 */
interface  myInterface{
    public function eat($food);
}

class Person implements  myInterface{
    public function eat($food)
    {
        echo "Person 喜欢吃".$food."\n";
    }
}
$man=new Person();
//在var_dump函数中使用instanceof关键字判断某个对象是否实现了某个接口
var_dump($man instanceof  myInterface );

7、多肽:
相同的方法,但是不同的参数,得到不同的结果,这就是多肽

8、抽象类:
使用abstract class来定义一个抽象类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值