我的邻居正在参加“Java简介”,并请我帮助解释一些第一天的概念。我意识到,因为我每天都这样做,所以我没有初学者的想法,而且从头开始很难将这些内容联系起来。
对我来说,实际上并非无足轻重的解释是“什么是一个阶级?”
我到目前为止最好:
变量包含某种数据;一个变量可能是名字,另一个变量可能是你的体重(磅)。
方法是一个函数,它可以完成任务,并可以使用这些变量。一种方法可能会在屏幕上显示您的名字,或者告诉您应该失去多少体重以获得良好的BMI比率。
对象包含变量和方法;一个对象可能代表你,第二个对象可能代表我。
类是一种蓝图或模板,用于描述每个对象中的方法和变量。对象是实例化的(一个实例)类;一个对象就是某种东西,而这个类只是制作这个东西的计划。
继续这个例子,我们有一个Person对象,它被实例化以保存Alice的数据,另一个Person对象被实例化以保存Bob的数据,另一个用于Carol,依此类推。
如何调整此示例以使其更有意义,和/或什么是更好的方法? “实例化”这个词在这一点上感觉太重了。
(我认为这是一个有用的问题,但显然是主观的;标记为社区维基。)
答案 0 :(得分:39)
答案 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)
答案 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之间的区别会更容易一些。