本帖最后由 xuzuning 于 2012-04-21 14:04:26 编辑

解决方案 »

  1.   

    稍微简化了你的例子,看注释应该清晰多了吧<?php
    abstract class person{
        abstract public function speak();
        public $a;
        public $wq;
        public function studywx($wx){
             $wx->studywx();
        }
        public function usewq($wq){
            $wq->usewq();
        }
    }
    class chperson extends  person{
        public function speak(){
            echo "中国人在说话,各路让行!~";
        }
    }
    class amperson extends  person{
        public function speak(){
            echo "美国人在说,叽叽喳喳!~";
        }
    }interface istudy{
        public function studywx();
    }
    class studyw implements istudy{
        public function studywx(){
            echo "如来神掌";
        }
    }
    class studtq implements istudy{
        public function studywx(){
            echo "葵花宝典";
        }
    }interface iwq{
        public function usewq();
    }
    class jian implements iwq{
    public function usewq(){
    echo "倚天剑";
    }
    }
    class qiang implements iwq{
    public function usewq(){
    echo "洋枪";
    }
    }$chiness=new chperson();//上来个中国人
    $chiness->studywx(new studyw()); //给本如来神掌学
    $chiness->usewq(new jian());//给他把倚天剑$american=new amperson();//上来个美国人
    $american->studywx(new studtq());//给本葵花宝典学
    $american->usewq(new qiang());//给他个破洋枪