zoukankan      html  css  js  c++  java
  • 继承覆盖问题

    <?php
    class A{
    private $n1;
    private $n2;
    private $n3;

    public __set($p_name,$p_v){
    $this->p_name=$p_v;
    }
    pubilc __get($p_name){
    if(isset($p_name)){
    return $this->p_name

    }else{
    return null;
    }
    }
    }
    $a1=new A();
    $a1->$n1="hhh";
    echo $a1->n1;
    ?>

    继承
    <?php
    class P{
    public $n;
    protected $a;

    public function showInfo(){
    echo $this->n."||".$this->a;

    }
    public function t(){
    echo "小学生";
    }
    }

    class graduate(){
    public $n;
    protected $a;

    public function showInfo(){
    echo $this->n."||".$this->a;

    }
    public function t(){
    echo "大学生";
    }
    }
    (代码复用性不高)

    解决:

    //父类
    class stu(){
    public $n;
    protected $a;
    public functon __construct();
    public function showInfo(){
    echo $this->n."||".$this->a;
    }
    }
    //子 类
    class P extends stu{
    public function tsting(){
    echo "小学生";
    }
    }
    class graduate extecds stu{
    public function testing(){
    echo "大学生";
    }
    }


    $stu1=new p();
    $stu->n="小米";
    $stu1->testing();
    $stu1->showInfo();

    $stu2=new grduate();
    $stu2->n="大米";
    $stu2->testing();
    $stu2->showInfo();
    继承 (public/protected) extecds
    基本语法
    class 类名 extecds父类名{
    再写自己需要的属性和方法
    }
    ?>
    <?php
    class A{
    public $n1=1;
    protected $n2="hhh";
    private $n3=11.2;
    public function test1(){
    echo "test1()";
    }
    proected function test2(){
    echo"test2()";
    }
    private function test3(){
    echo "test3()";
    }
    }
    class sudclass extends A{
    function show(){
    //echo $this->n2;
    //echo $this->n3;
    $this->test2();
    }


    }
    //创建subclass对性
    $sub1=new sudclass();
    //echo $sud1->n1;
    $sud1->test1();
    //echo $sud1->show;
    $sud1->show;

    ?>


    <?php
    class A{
    public function __construct(){
    echo "A__construct";
    }
    }
    class B extends A{
    function __construct(){
    echo "B__construct";
    }
    }
    //创建B类对象实例
    $b=new B();

    ?>

    了解

    如果我们希望去调用父类的 构造方法 ,或者其他方法(public/protected),
    可以这样处理
    类名::方法名()
    parent::方法名
    举例
    class A{
    public $n1=90;
    //构造方法
    public function __construct(){
    echo "A__construct";
    }
    }
    class B extends A{
    function __construct(){
    echo "B__construct";
    //显式的调用父类的方法
    //A::__construct();
    parent::__construct();
    }
    }

    当一个子类和父类的方法完全一样(public/protected)我们称为方法的覆盖

  • 相关阅读:
    插件模块与模块之间的通信(转)
    C#反射调用其它DLL的委托事件 传值
    单元测试
    c#实现动态加载Dll(转)
    Access sql语句创建表及字段类型(转)
    关于不同数据库表自动转换的功能
    通过DataTable获得表的主键
    C/s程序过时了吗?
    关于C/s结构 本地目录的思考
    关于创建人,创建日期,修改人,修改日期
  • 原文地址:https://www.cnblogs.com/xujing6/p/5990555.html
Copyright © 2011-2022 走看看