zoukankan      html  css  js  c++  java
  • (转)接口、类、抽象类、对象的另类解释

    大家也许都知道做工艺器或是工厂里做生产某些产品的模具模具。如做一个金属的五角星,只要将钢水罐到五角星的模具模具里就可以很容易地制做五角星。

        我们也可以将类比喻成做五角星的模具。  而生产出的一个个五角星就是一个个对象。 为了建立不同的对象(有的是金属的、有的塑料的,等等),可通过向模具里灌入不同的液态材料就可以制做。这也相当于向类的构造方法中传入不同的参数(相当于不同的液态材料)。

        还有就是接口,如果说类是对象的抽象,那么接口就是类的抽象。
    我们也可以将接口看成是制做这个五角星模具的规格列表(相当于接口中的抽象方法)。也就是说,只有这个模具(类)符合(实现)相应的规格(接口),才会成为制做五角星的模具模具。

    哈哈,当然,这个使用模具生成五角星及其他产品的工厂可以看成是对象工厂。

    class  ObjectFactory
    {
         public   static  五解星 create五角星() {}
       
         public   static  圆 create圆() {}

           public   static  椭圆 create椭圆() {}
        
    }



        也就是说,类和接口都不是实际的产品,都不能拿来用,类相当于模具(没人会拿模具模具在商店里卖吧,估计只有对象工厂会买),而接口只相当于制做模具的规 格列表,如尺寸、角度等。而这些规格列表的内容需要在具体类中实现才可能成为具体的模具,如长度和宽度,如果在类中实现为长度等于宽度,那么这个类就成为 一个成方形的模具,如果长度不等于宽度,就是一个长方形的模具。然后再实例化这个模具(类),就生成出一个个正方形或长方形对象。

        在面向对象理论中还有一个抽象类,这个抽象类其实就相当于一个半成品的模具。如只实现在长度和宽度(相当于在抽象类中已实现的方法),并没有实现深度(这 个深度相当于抽象类中的抽象方法,这个抽象方法需要在抽象类的子类中实现)。所以这个模具就是半成品了。因此,是无法直接拿半成品的模具(抽象类)去生产 (实例化)产品(对象)的。

    http://www.it610.com/article/3938477.htm

  • 相关阅读:
    Objective-C /iphone开发基础:分类(category,又称类别)
    Objective-C,复合类,Composition
    [置顶] Objective-C开发环境介绍以及Cocoa,以及第一个程序
    链表的创建与插入练习
    c++算法联系,冒泡排序,bubble sort,插入排序,insert sort,
    封装,capsulation,&&继承,Inheritance,&&多态,polymorphism
    inheritance,菱形继承, 虚继承,virtual
    c++中运算符重载,+,-,--,+=,-=,*,/,*=,/=,
    [置顶] 运算符重载,浅拷贝(logical copy) ,vs, 深拷贝(physical copy),三大件(bigthree problem)
    [置顶] c++类的继承(inheritance)
  • 原文地址:https://www.cnblogs.com/laopo/p/11044147.html
Copyright © 2011-2022 走看看