代码之家  ›  专栏  ›  技术社区  ›  fastcodejava

你如何描述一个新的CS学生?

  •  1
  • fastcodejava  · 技术社区  · 14 年前

    在OOP中,有一些实体(例如Person)具有属性(例如name、address等)和方法。你怎么形容 new

    12 回复  |  直到 14 年前
        1
  •  5
  •   Community CDub    8 年前

    取决于语言 new 可以用作运算符或修饰符的关键字。例如在 C# new can be used

    • new运算符-用于在堆上创建对象并调用构造函数。
    • 新修饰符-用于从基类成员隐藏继承的成员

    对于全新的学生我会描述 新的 新的 作为那些蓝图变成有形物体的机制。

    How to teach object oriented programming to procedural programmers 关于向新开发人员教授OOP的其他重要答案。

        2
  •  6
  •   Ignacio Vazquez-Abrams    14 年前

        3
  •  6
  •   paxdiablo    14 年前

    给你的CS学生?别装腔作势,他们需要能够很快地理解这些概念,并使用与计算机领域无关的隐喻,虽然尝试向你80岁的祖母解释这些概念是可以的,但对一个计算机系学生并没有多大帮助。

    简单地说,告诉他们一个类是某个东西的规范,一个对象是某个东西的具体实例。全部 new 是基于规范创建一个具体的实例。这包括两个创建(不一定是特定于类的,这就是为什么我不愿意将其称为方法,将该术语保留为类绑定函数) 特定于类)。

        4
  •  3
  •   Jörg W Mittag    14 年前

    在大多数面向对象语言中, new 只是一个命名工厂方法的约定。但这只是众多惯例之一。

    例如,在Ruby中,通常将factory方法命名为 [] 对于集合类。在Python中,类只是它们自己的工厂。在Io中,factory方法通常被称为 clone ,在loke和Seph中它被称为 mimic .

    在Smalltalk中,工厂方法通常有更多的描述性名称,而不仅仅是 new: . 有点像 fromList: with:

        5
  •  2
  •   OmnipotentEntity    14 年前

    这是一个过去对我有用的比喻。

    对象定义是一个果冻模具。”“新”是一个过程,实际上是一个果冻点心从模具。你给你的新邻居的每一个粘糊糊的果冻都是不同的,这一个是绿色的,这一个里面有一些水果,等等。这是它自己独特的“对象”。但是霉菌是一样的。

    至于它在语法中的作用,它只是一个关键字,让编译器知道堆上的分配内存并运行构造函数。没有更多的了。

        6
  •  2
  •   Frank Shearar    14 年前

    Smalltalk:它是元类上的一个实例方法。所以“new是一个返回新分配实例的方法。”

        7
  •  1
  •   Dave Markle    14 年前

    我告诉人们,一个类就像一个如何制作对象的计划。对象是由 new . 如果他们需要更多,我只是不知道该说什么。;-)

        8
  •  1
  •   Scott    14 年前

    new

    String str = new String("asdf");
    

    str被定义为使用构造函数和参数“asdf”的字符串类变量

    至少这就是它呈现给我的方式。

        9
  •  1
  •   Ken    14 年前

    在Ruby中,我相信它是元类上的一个实例方法。在CLOS中,它是一个名为 make-instance

    在一些语言中,比如Java, new 有特殊的语法,元类部分是隐藏的。如果你必须用这样的语言教某人OO,我不知道你能做多少。(从教OO和Java到教第二个对象系统的过程中稍作休息几乎肯定会让他们更加困惑!)解释一下它的作用,这是个特例。

        10
  •  1
  •   aherlambang    14 年前

    可以说类是对象的原型/蓝图。当你给它关键字new时,原型/蓝图就会出现。就像你在给那些死去的人呼吸生命。

        11
  •  1
  •   Mike Clark    14 年前

    在爪哇,

    • new运行类的构造函数来初始化该实例
    • new返回对该新实例的引用

    实例 作为 是为了 建筑

        12
  •  1
  •   SingleNegationElimination    14 年前

    new 在大多数语言中都有以下几种变体:

    1. 以特定于该类的方式初始化该内存区域,将原始内存的字节转换为该类的有效实例的字节