对没有使用过它们的人定义“类”和“对象”这两个词的最佳方法是什么?

时间:2010-09-10 17:03:48

标签: java oop terminology

我的邻居正在参加“Java简介”,并请我帮助解释一些第一天的概念。我意识到,因为我每天都这样做,所以我没有初学者的想法,而且从头开始很难将这些内容联系起来。

对我来说,实际上并非无足轻重的解释是“什么是一个阶级?”


我到目前为止最好:

  • 变量包含某种数据;一个变量可能是名字,另一个变量可能是你的体重(磅)。

  • 方法是一个函数,它可以完成任务,并可以使用这些变量。一种方法可能会在屏幕上显示您的名字,或者告诉您应该失去多少体重以获得良好的BMI比率。

  • 对象包含变量和方法;一个对象可能代表你,第二个对象可能代表我。

  • 是一种蓝图或模板,用于描述每个对象中的方法和变量。对象是实例化的(一个实例)类;一个对象就是某种东西,而这个类只是制作这个东西的计划。

继续这个例子,我们有一个Person对象,它被实例化以保存Alice的数据,另一个Person对象被实例化以保存Bob的数据,另一个用于Carol,依此类推。


如何调整此示例以使其更有意义,和/或什么是更好的方法? “实例化”这个词在这一点上感觉太重了。

(我认为这是一个有用的问题,但显然是主观的;标记为社区维基。)

29 个答案:

答案 0 :(得分:39)

一个类和一些类实例:

Courtesy of wikipedia

public domain image hosted by wikipedia

答案 1 :(得分:23)

  

Class:Object :: Blueprint:Building

答案 2 :(得分:13)

“汽车”是一个班级。 我的汽车,坐在我的车道上,是一个实例(物体)。

答案 3 :(得分:3)

我在java课程中使用的一个示例是Human

阅读此内容的每个人都是Human(至少我希望如此!),我们都有相似之处,但最后我们都是Human(毕竟)。

每个Human(称为实例对象)具有特定的特征,例如眼睛颜色或语音,它们是字段< / em>(你称之为变量,但正确的名称是 fields )。但是值与Human 实例不同。

还有与人类共享的共同知识,像“毕达哥拉斯定理”这样的原则。这种知识很常见,可以解释为静态字段(我知道这是夸大其词),这意味着这种知识不仅包含在一个人类中,而且包含在人类中。

每个Human都可以做一些事情,比如走路,说话等。这就是所谓的方法,步行对每个人来说都是一样的,但是当我走路时,不是每个人都走路。行走行为只影响执行此操作的Human 实例,但它仍由Human

定义

如果你想深入了解OOP,Teaching OOP to non-programmers

答案 4 :(得分:3)

对象是的东西。一个类是事物的类别

“人”是一个阶级;你是一个对象,是Person类的一个实例。此外,“你”这个词可以被认为是一个变量,因为它指的是一个人,但并不总是同一个人。

答案 5 :(得分:3)

面向对象编程是关于使用构建块创建程序,现实世界中存在的“事物”,这些现实世界的东西称为对象,因此对象面向

例如,如果您正在创建通讯簿程序,则可以定义以下对象:

person, address, phone

其中许多人。那些将是现实生活中的对象,您可以根据这些抽象来描述您的程序。

考虑到这一点,您可以开始描述一些概念。

用于定义对象将具有的特征。类仅用作模板或蓝图。例如,对于地址簿中的所有人,您可能会说他们都会:

Person:
   - name 
   - last name 
   - phone number 
   - address 

等。

地址可能包含:

 Address:
    - street 
    - number
    - city 
    - zip code 
    - country 

等等。正如您所注意到的,我可以根据其他类来定义类,例如,在此上下文中,一个人有一个地址。

对象是给定类的特定实例。在地址簿中添加条目时,可以创建对象并填写属性。

 onePerson  ofType Person is (  
     - name = "Oscar"
     - last name = "Reyes" 
     - phone number = "56 58 11 11"
     - address = anAddress ofType Address (
                     - street = "Tecolotes" 
                     - number = 32
                     - city   = "D.F." 
                     - zip code = 23423
                     - country = "Mexico"
                 ) 
  )

因此,该对象是一个用数据实例化的类。地址簿中的其他条目是具有不同数据的其他对象。

这显示了它们之间的区别。

OOP中还有其他相关概念值得列出,并与对象和类的概念相互关联:

抽象您无需列出人员的所有属性即可使用它。例如,在这种情况下,你不关心那个人是单身还是已婚,即使在现实生活中,这些人要么单身,要么已婚。

封装来自此人的属性对其他对象隐藏,并通过方法进行访问,从而防止数据损坏。

多态性不同的类型可能会对同一条消息或方法做出不同的反应。

继承类可能具有继承超类特征的子类,属性和行为。

答案 6 :(得分:3)

班级描述就像是房子的蓝图。从该蓝图建造的所有房屋都是该类别的对象。给定的房子是一个实例。租户可以是房子里变化的变量。方法的一个例子是邮局通过邮箱向房子发送和接收邮件(邮件)的程序。

答案 7 :(得分:2)

是用于创建对象的蓝图/模板。 对象是类的实例。

enter image description here

答案 8 :(得分:2)

class ::男人或女人

对象::我,你...

答案 9 :(得分:2)

class == cookie cutter,object == cookie。

答案 10 :(得分:1)

我总是把它们定义为蓝图和产品。

蓝图描述了每个细节的完整产品,产品是从机器中产生的结果。

答案 11 :(得分:1)

java类是对象的结构或蓝图,对象是类的实例(内存创建)。

示例:Car是一个对象(真实世界实体)。 首先,制作一个汽车类的结构或设计,当汽车的设计,转换现实世界汽车它是一个对象。 Car(对象)现在正在代表汽车(类)的设计。

答案 12 :(得分:1)

类可以定义为蓝图或模板,它定义实体的属性,动作,状态,对象将是实体的实现。

答案 13 :(得分:1)

如果你的邻居属于古典哲学,那么课程就是柏拉图的形式,对象就是我们每天看到的基于形式的东西。

答案 14 :(得分:1)

班级:女孩

对象:那个女孩,这个女孩,我的女孩......也许不是。

是的,所有女孩都应该拥有女孩的属性(在这种情况下是一类)。

答案 15 :(得分:1)

当且仅当他熟悉柏拉图的形式理论时,你可以做一个类比,就像柏拉图的形式和对象就像柏拉图的真实世界对象一样。

有关完整说明,请参阅this post

答案 16 :(得分:0)

你可能会发现Guy L. Steele的这句话很有趣:http://video.google.com/videoplay?docid=-8860158196198824415#

答案 17 :(得分:0)

Object是类的实例 变量是类型

的实例

这个,一个类可以像“类固醇类”:    它可以有:         变量可以来自任何类型或来自另一个类的对象         方法,这             可以像对不同类型的方法一样对类变量进行操作(例如+(bool,bool))             可以访问类变量     而这一切都由你自己定义!

您可以使用这些类以最佳方式对问题进行建模。 但有时候还有其他方法可以做到这一点;)(不仅仅是OOP)

答案 18 :(得分:0)

OOP只是在程序中表示抽象数据结构的另一种方式。在面向对象的术语中,类型称为类,具有该类型的变量称为对象。更多关于type <-> class, variable <-> object通信。

答案 19 :(得分:0)

类:自定义变量类型

object:一个变量,其类型是自定义的(如果你不计算内置的那个)

答案 20 :(得分:0)

我们也可以理解类和对象的概念: 作为一个类是一个模板,所以让我们有两个例子: 例1:蛋糕的配方是一个模板,所以它是一个类和蛋糕制作 以下配方是对象。 示例2:砖制造商是一个类,砖是对象

答案 21 :(得分:0)

如果他们正在学习编程OO让他们使用BlueJ。他们应该在完成第一个教程后得到差异。

您定义了类,当您实例化它们时,它们实际上出现在GUI的底部,此时您可以调用它们的方法。

与你想要尝试的任何类比相比,它确实有助于更好地理解这一点。即使你指出了类比,它也没有转化为尚未学习OO的人的代码(尽管我们所有人看起来都很自然,所有这些描述都很有意义。)

答案 22 :(得分:0)

您的问题详细信息对所有条款都有很好的定义。这是我发现非常有用的类比 - 我用一种自上而下的方法列出了它:

员工。正如您所说,这是一种“蓝图”或“模板”,其中包含有关组织中所有种类员工的一般详细信息 - 让我们考虑 director 项目经理开发人员承包商 housekeeping 工作人员。他们都是员工:因此,他们都是班级的实例对象

所有对象都有一些共同的属性 - 他们都被分配了一个员工ID 。他们都画了薪水。它们都有名称。人们可以称之为成员变量,因为它们存在于所有对象中,但它们的值根据它们所属的对象明显不同。

最后,需要为所有员工执行一些功能 - 例如 onBoarding() calculateSalary()

答案 23 :(得分:0)

Class: Human being
Object : Man, Woman 

Class : Fruit 
Object : Apple, Banana, Mango ...

Class : Mobile Phone
Object : Apple , Samsung , LG ...

Class : Food
Object : Pizza, Rice ....

答案 24 :(得分:0)

对象是一组相关的数据和功能。在类中定义了数据和功能组将包含的内容。 Class是对象的设计或规范。

答案 25 :(得分:0)

熊猫DNA是一类。熊猫跑来跑去,吃东西并进行熊猫式活动是一个目标。

答案 26 :(得分:0)

Class教对象如何表现。 类是对象的蓝图。它告诉虚拟机如何制作该特定类型的对象。该类的每个对象都可以为该类的实例变量具有自己的值。 示例:您可以使用Button类来制作数十个不同的按钮,每个按钮可能具有自己的颜色,大小,形状和功能。

答案 27 :(得分:-1)

我强烈建议他/她购买Matt Weisfeld撰写的一本名为The Object-Oriented Thought Process的书。这是对OO的一个非常好的概念性介绍。我把我的副本借给了一些刚进入OO的人,他们真的很喜欢它。

答案 28 :(得分:-1)

我可以举一个例子:动物,人类,汽车等。这里动物,人类,汽车被认为是班级,现在考虑狗:这里狗被视为对象,谁属于动物类。如果我们考虑一只狗,那么它的状态是 - 名字,品种,颜色和行为 - 吠叫,吃,跑,睡觉。现在我们可以说,A类是Animal类的蓝图,从中创建单个对象。这里的barking(),running(),eating(),Sleeping()等是特定Dog对象的方法。我认为理解Class和object之间的区别会更容易一些。