继承和委托关系

小孩和公共设施

用继承的方法:

class Sanitation{
    public function  Washhands(){
        echo "Cleaning!";
    }
}

class Child extends  Sanitation{

}

$child=new Child();

$child->Washhands();

委托关系:

class Sanitation{
    public function  Washhands(){
        echo "Cleaning!";
    }
}

class Child  {
    private $sanitation;
    function __construct(){
        $this->sanitation=new Sanitation();
    }
    public function Washhands(){
        return $this->sanitation->Washhands();
    }

}

$child=new Child();
$child->Washhands();

继承和委托关系

时间: 2024-08-11 05:45:35

继承和委托关系的相关文章

分类 类扩展 继承 协议 委托

分类 类扩展 继承 协议 委托 分类(Category) 不产生新类,不修改原类,但有自己的.h和.m文件 分类只能向原类中增加方法,或者重写原类的方法 声明的@property只会生成getter setter方法的声明 类.h中定义的方法必须实现,但分类.h中定义的方法,可以不实现 同名方法,分类的优先级高类别主要有3个作用:(1)将类的实现分散到多个不同文件或多个不同框架中.(2)创建对私有方法的前向引用.(类.h中未声明,但存在于.m中的私有方法,通过在分类.h中声明一下,就可以在其他类

重构笔记——隐藏“委托关系”

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/43769929         在上一篇文章中介绍了"将类内联化".本文将介绍"隐藏委托关系"这种重构手法.         下面让我们来学习这种重构手法吧. 开门见山         发现:客户通过一个委托关系来调用另一个对象. 解决:在服务类上建立客户所需的所有函数,用以隐藏委托关系. 动机 我们都知道,"封装&q

重构改善既有代码设计--重构手法14:Hide Delegate (隐藏委托关系)

客户通过一个委托类来调用另一个对象.在服务类上建立客户所需的所有函数,用以隐藏委托关系. 动机:封装即使不是对象的最关机特性,也是最关机特性之一.“封装”意味着每个对象都应该少了解系统的其他部分.如此以来,一旦发生变化,需要了解这一变化的就比较少---这会使系统比较容易进行. 任何学过对象技术的人都知道:虽然Java将字段声明为public,但你还是应该隐藏对象的字段.随着经验日渐丰富,你会发现,有更多可以(值得)封装的东西.如果某个客户需要通过服务对象的字段得到另一个对象,然后调用后者的函数,

[iOS]Objective-C基础回顾:继承和委托

背景 大一的时候第一次接触iOS编程,当时的感觉就是:Xode真乃神兵利器也! 时隔三载,今日故地重游,不妨就用Xcode造一把"神兵利器":无敌大锤子,回顾一下iOS编程中常见的问题. 基础 再厉害的神兵利器,说到底也就是一把普通的武器. 我们可以抽象出所有武器共有的特性,作为神兵利器的父类. 首先我们先创建一个最简单的武器Weapon类. // // Weapon.h // Weapon // // Created by WHY on 14-3-21. // Copyright (

在对象之间搬移特性---Hide Delegate(隐藏委托关系)

客户通过一个委托类来调用另一个对象. 在服务类上建立客户所需的所有函数,用以隐藏委托关系. 动机: 封装即使不是对象的最关机特性,也是最关机特性之一."封装"意味着每个对象都应该少了解系统的其他部分.如此以来,一旦发生变化,需要了解这一变化的就比较少---这会使系统比较容易进行. 任何学过对象技术的人都知道:虽然Java将字段声明为public,但你还是应该隐藏对象的字段.随着经验日渐丰富,你会发现,有更多可以(值得)封装的东西. 如果某个客户需要通过服务对象的字段得到另一个对象,然后

【OC学习-13】什么是组合,它和继承是什么关系?

继承有两缺点:(1)当层级越来越多时,假如每一个层级都有实例变量,那么最下层的子类继承的实例变量会超级多,沉重.(2)当消息传递自子类往上时.层级越多,效率越低下. 所以就有了组合.说实话区分继承和组合真不是那么easy.所谓两者是"is a"关系则是继承,两者是"has a"则是组合,还是模糊.事实上.这两个概念无须区分十分明显,仅仅须要记住:a)组合和继承实现的功能几乎相同,可是实现的形式不一样,记住各自的形式就可以:b)尽量用组合. 很多其它差别详见:http

Java 类与类的关联、聚合、继承、实现关系

关联关系(最弱的一种关系): 关联关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的.关联可以是单向.双向的.表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量. 例如学生和老师 老师要讲课, 这 是一个方法, 要传个参数进去, 参数是学生对象 继承关系(避免多重继承) 继承指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力.在Java中继承关系通过关键字extend

.net下继承与派生关系

自己用C#写个东西玩的,碰到点面向对象的问题,代码如下: abstract class AbsClass { virtual protected void method() { //do something } public void doMethod() { //do something method(); //do other things } } class RideClass : AbsClass { protected void method() { //sub class doing

Template Method模式和Strategy模式[继承与委托]

继承 program by difference. 通过继承,可以建立完整的软件结构分层.其中每一层都可以重用该层次以上的Code. 过度使用继承的代价是巨大的.应使用组合或者委托来替代继承. Template Method(使用继承)和Strategy(使用委托)模式解决了相同的问题:分离通用的算法和具体的上下文(DIP). Template Method模式. Strategy模式 Template Method模式允许一个通用算法操纵多个可能的具体实现. 而完全遵循DIP的Strategy