`
长虫的梅子
  • 浏览: 42297 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

抽象类与接口:让设计与实现分离!

    博客分类:
  • PHP
PHP 
阅读更多
对于抽象类和接口的使用也是非常常见的,然后他们存在意义是什么呢?

抽象类与接口的意义在于让 设计与实现相分离。

在抽象类中定义了一些标准,或者是实现了部分的方法,继承与该抽象类的子类可以遵循这些标准来实现自己的需求,或者是重写抽象类中已经实现的方法。
抽象类 不能被直接实例化,必须通过继承来实现。

接口 只能定义标准(一些方法),而不能包含具体实现的方法。
如果要使用接口,必须把在接口中定义的标准(一些方法),具体实现(也就是将接口中定义的方法全部实现)。

抽象类和接口,功能很相似,类只能继承与一个父类,却能一起使用多个接口,两者也能一起使用。

总结为:单继承,多接口;先继承, 后接口。

下面看如何定义抽象类 和 接口, 并且怎样一起使用。

定义抽象类的方法:


// 定义一个关于形状的抽象类
abstract class Shape()
{
   function setCenter($x, $y)  // 定义了一个具体实现的方法
   {
      $this->x = $x;
      $this->y = $y;
   }
   abstract function draw();  // 定义了一个抽象的方法,也就是一个标准,需要子类具体实现的
   protected $x, $y;          // 定义了两个属性
  
}

// 定义一个方形的子类
class Square extends Shape
{
   function draw()
   {
      // 这里根据方形的特征来实现该方法
   }
}

// 定义一个园的子类
class Circle extends Shape
{
   function draw()
   {
      // 这里根据园的特征来实现该方法
   }
}




定义接口的方法:


interface Chargeable
{
   public function getPrice();
}

class shopProduct implements Chargeable
{
   public function getPrice()
   {
      // 具体实现接口中定义的 getPrice 方法的功能
   }
}



一起使用抽象类和接口:


class AClass extends BClass implements AInterface,BInterface
{
   //...
}


上面只是简单的介绍了抽象类和接口的一些概念,还需要在不断的实践中来加深对这些概念的理解。







分享到:
评论

相关推荐

    Java语言程序设计抽象类和接口PPT教案学习.pptx

    抽象类的作用是从类的角度分离接口和实现,基类定义公共接口,子类实现该接口。 通用超类(Universal Superclass) ------------------------- 通用超类是指java.lang.Object类,它是所有定义的类的超类。Object类...

    设计模式:单例设计模式(全部实现方式)工厂设计模式,抽象工厂模式

    该模式通常会定义一个工厂接口或抽象类,由具体的工厂类实现该接口或抽象类来创建相应的产品。工厂模式的常见实现方式包括简单工厂、工厂方法、抽象工厂等。 抽象工厂模式是一种创建型设计模式,它的主要目标是提供...

    6接口,虚方法,内部类,异常.rar

    实际上接口和抽象类的选择不是随心所欲的。 要理解接口和抽象类的选择原则,有两个概念很重要:对象的行为和对象的实现。如果一个实体可以有多种实现方式,则在设计实体行为的描述方式时,应当达到这样一个目标:在...

    C#抽象工厂实例,设计模式

    它将客户和类的实现分离,客户通过他们的抽象接口操纵实例,产品的类名也在具体工厂的实现中被分离,它们不出现在客户代码中。 l 它使得易于交换产品系列。一个具体工厂类在一个应用中仅出现一次——即在它初始化的...

    D11接口,多态.zip_d11接口_java接口_mannerglc_多态

    这样将功能的定义与实现分离,优化了程序设计。 多态是继封装、继承之后,面向对象的第三大特性。 Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是...

    PatternViaJava:设计模式_Java实现

    设计模式(java版) 模式是在某情景(context)下,针对某问题的某种解决方案 **总览图** ![设计模式预览]() *创建型* Singleton(单例模式):...Bridge(桥接模式):将抽象部分与它的实现部分分离,使它们都可以独立地变

    23 种设计模式汇集

    它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用 和智慧,让你能够真正掌握接口或抽象类的应用,从而在原来的 Java 语言基础上跃进一步,更重要的是,GoF 的设计模式反复 向你强调一个宗旨:要让...

    抽象工厂模式更换UI皮肤设计模式作业(100分)

    使用抽象工厂模式的主要目的是将对象的创建与使用相分离,从而提供了一种灵活的方式来创建对象家族,而不必指定具体的类。这可以使系统更具可扩展性和可维护性,因为可以轻松地添加新的具体工厂和产品类。 抽象工厂...

    【05-面向对象(下)】

    •接口体现了规范与实现分离的设计。 接口的定义 •和类定义不同,定义接口不再用class关键字,而是使用interface关键字。语法如下: •[修饰符] interface接口名 extends 父接口1,父接口2 ... •{ ...

    从模式讲到设计模式再到面向对象设计模式

    亚历山大看到了这一点,他知道结构不能与要解决的问题分离,因此,在寻找和描述设计质量一致性的探求中,亚历山大认识到,必须观察为了解决同样问题而设计的不同结构。  亚历山大发现,通过这样的方式——观察解决...

    设计模式工厂方法模式PPT学习教案.pptx

    工厂方法模式提供了一种解决方案,即定义一个用于创建对象的接口,让子类决定实例化哪个类。这样可以在不修改已有的代码的情况下,增加新的功能。工厂方法模式的定义是:定义一个用于创建对象的接口,让子类决定实例...

    学习php设计模式 php实现桥梁模式(bridge)

    抽象化(Abstraction)角色:定义抽象类的接口并保存一个对实现化对象的引用。 修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。 实现化(Implementor)角色:定义实现类的接口,...

    PetShop4.0宠物商店+系统架构设计+中文注释源码+PDF中文详解

    4、 IDAL要达到的目的是:实现业务逻辑(BLL)与数据库访问(DAL)的完全分离!!! 5、 IDAL各个类(IDAL文件夹中的各个文件)划分或者说编制的原则,更趋向于“将对数据库的不同操作进行归类”,考虑的主要方面是...

    软件设计模式知识点

    2. 桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。 3. 组合模式(Composite):将对象组合成树形结构以表示"部分-整体"的层次结构。 4. 装饰模式(Decorator):动态地给一个对象添加...

    第15章 面向对象程序设计1

    第15章 面向对象程序设计面向对象程序设计(object-oriented programming)的核心思想:数据抽象:可以将类的接口与实现分离继承:可以定义

    JAVA设计模式之创造型模式介绍.doc

    工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。 适用条件: 1. 当一个类不知道它所必须创建的对象的类的时候。 2. 当一个类希望由它的子类来...

    二十三种设计模式【PDF版】

    和智慧,让你能够真正掌握接口或抽象类的应用,从而在原来的 Java 语言基础上跃进一步,更重要的是,GoF 的设计模式反复 向你强调一个宗旨:要让你的程序尽可能的可重用。 这其实在向一个极限挑战:软件需求变幻...

    Java设计模式(含代码)

    Bridge:将抽象部分与它的实现部分分离,使之可以独立变化。 Chain of Responsibility:为解除请求的发送者和接收者之间的耦合,而使多个对象有机会处理这个请求。将这些请求连成一个链,并沿着这条链传递该请求,...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    *5.6 C++处理字符串的方法——字符串类与字符串变量 5.6.1 字符串变量的定义和引用 5.6.2 字符串变量的运算 5.6.3 字符串数组 5.6.4 字符串运算举例 习题 第6章 指针 6.1 指针的概念 6.2 变量与指针 6.2.1 定义...

    [详细完整版]10操作系统.doc

    对象 对象的静态特征称为属性, "当接口与实现分离时,只要类的接口没有改变" "动态特征称为行为。对象之间通过发送",对私有实现的修改不会影响程序的其它部分" "和接受消息互相联系。 "。 " " "8.5.2 类声明和...

Global site tag (gtag.js) - Google Analytics