类和对象实例之间有什么区别?

9
一个类是将方法和变量绑定在一个单元中的一种方式。
一个对象是一个类的实例。
这些是编程书籍中关于类和对象的定义。我的朋友说,一个类是对象的蓝图,而对象是蓝图的真实“事物”。他给了一个例子:如果公司是一个类,那么INFOSYS、CTS和TCS等就是对象。每当我想到类和对象时,这些定义会让我感到困惑。如果频道是一个类,那么类的对象会是什么?如果水是一个类,那么类的对象会是什么?你能帮我澄清一下吗?

2
你应该读一本好书并通过一些例子进行实践... - home
你的朋友是错的。类本身可以被视为对象。 - Amir Afghani
1
但是只有在特定的语言中...最好先打好基础,然后再解决这个问题。 - Sheena
一个类就像是一份招聘广告,而对象则是实际填补该职位的人。 - Textmode
请参考这个问题的答案:Type和Class之间有什么区别? - mins
可能是类、对象和实例的区别的重复提问。 - maxxon15
11个回答

17
如果频道是一个类,那么Start Sports, BBC和ESPN就是它的对象。如果水是一个类,“Fresh Lime Water”和“Soup”就是它的对象。
虽然你可能会觉得这个解释有点模糊,但这是我能想到的答案。
以下是你可以学习和区分类的方法:
假设你有一个叫做"CAR"的类。
它的对象是Hyundai、Ford和Suzuki。它们将拥有相同的方法但不同的设计 - 这就是你如何将对象和类与现实世界联系起来的方式。

感谢您的澄清。如果Channel是一个对象,那么它所属的类是什么? - swaminathan_manickam
我已经在我的回答中提到了,请仔细阅读。如果 CHannel 是对象 ESPN、START sPORTS、TEN SPORTS、BBC、CNBC 等是它的对象。 - droidchef

5

类指定其实例的行为。

类本身也是一个类的实例(类的类被称为“元类”)。

类是一种抽象概念。你可以通过找到适用于一组对象的通用属性来找到类。

因此,类是一个模板,它定义了要包含在特定类型的对象中的方法(行为)和变量(状态)。

识别类(在教室外)需要经验。

阅读Alan Kay的任何内容,他是面向对象技术的发明人之一,也是Smalltalk的发明者之一,它是迄今为止唯一的纯对象环境。


3
我会给你一个经典的解释,你可以在各处找到不同版本的解释。
类就像一份蓝图。比如说你想要造一辆汽车,第一件事情是需要一个计划,这个计划就是类。计划会描述“方法”比如 brakehoot。它也会描述汽车的各种组成部分,这些都是变量。
汽车对象是汽车类的实例化。你可以有很多这样的对象来表示同一个汽车类。
例如:
class Car:
    def __init__(self,color):
        self.color = color

    def hoot(self):
        "do stuff"


red_car = Car('red')
red_car.hoot()
blue_car = Car('blue')
blue_car.hoot()

现在,根据您所使用的语言,类本身可以是对象(这在Python中是这种情况)。想象一下:所有蓝图都有一些共同点。这些共同点描述在蓝图的类中(它本身就是一个蓝图)。

那么,在“水”作为一个类的情况下,根据您想要做什么,可以采用几种方法:

方法1:

最好有一个名为Liquid的类,其中包含描述诸如粘度、气味、密度、体积等内容的变量。Water将是此类的实例。橙汁也一样

方法2:

假设您正在组装一个由不同地形组成的方块游戏。您可以拥有像Grass、Water、Rock等类(想象一下Minecraft)。然后您可以有一个水类实例(一个水物体),占据地图上的特定位置。


3
我没有太多的编程经验,但我的一个朋友给了我一个很好的定义类和对象的例子。 我会尽力用人类语言来解释。
以一匹马为例。什么让你知道这个动物是一匹马而不是一只狗?因为它有四条腿,是一只大动物,非常强壮,可以奔跑。那么,你在脑海中定义了一个“马”类! 现在,你将看到一匹名叫“波莉安娜”的白色母马和一匹名叫“恶魔”的黑色公马。一旦你看到它们,你就知道它们是马,所以它们属于“马”类。 它们之间有什么区别?性别和颜色……这些都是“马”类的属性。 “波莉安娜”和“恶魔”是两个对象,它们是真实的东西,你可以触摸和骑它们。它们的属性,性别和颜色也不同。波莉安娜是白色的母马。恶魔是黑色的公马。这些定义的属性是区分一个对象与另一个对象的关键。一个马和另一个马。但它们仍然属于同一个类:它们总是马!
现在更加技术化……类是某个东西的更抽象的定义。蓝图。对象是属于该类的真实物品。当你从一个类创建一个新对象时,你正在实例化一个对象(也称为创建一个实例)。
希望这有所帮助,如果没有,对不起……正如我之前所说,我没有太多的编程经验 :)
Gianluca

0
在现实世界中,你经常会发现许多相同类型的个体对象。可能存在成千上万个其他频道,都是同一品牌和型号。每个频道都是从同一套蓝图构建而成,因此包含相同的组件。从面向对象的角度来看,我们说你的频道是被称为频道的对象类的一个实例。类是创建个体对象的蓝图。
class Channel {

    ChannelType type = 0;
    int employeeCount = 0;


    void setType(ChannelType newType) {
         type = newValue;
    }

    void addEmployer(int increment) {
         employeeCount= employeeCount+ increment;   
    }

    void removeEmployer(int decrement) {
         employeeCount= employeeCount- decrement;
    }

    void printStates() {
         System.out.println("type :" +
             type + " employee count:" + employeeCount);
    }
}

这个类的设计基于之前讨论的 Channel 对象。字段 typr 和 employeeCount 表示对象的状态,而方法(setType、addEmployer、removeEmployer 等)定义了它与外部世界的交互。

您可能已经注意到,Channel 类不包含 main 方法。那是因为它不是一个完整的应用程序;它只是可能在应用程序中使用的 Channels 的蓝图。创建和使用新的 Channel 对象的责任属于应用程序中的其他类。

class Channel Demo {

    public static void main(String[] args) {

        // Create two different 
        // Channel objects
        Channel BBC= new Channel ();
        Channel NTV = new Channel ();

        // Invoke methods on 
        // those objects
         BBC.setType(channeltype.NEWS);
         BBC.addEmployer(500);
         BBC.printStates();

         BBC.setType(channeltype.SPORT);
         BBC.addEmployer(300);
         BBC.printStates();


    }
}

这个测试的输出会打印出两个频道的信息:
类型:NEWS 员工数量:500
类型:SPORT 员工数量:300

0

在语法中,普通名词是类(Class),专有名词是对象(Object)。


0
一个对象的寿命是有限的,对象被创建并最终被销毁。同时,在对象的生命周期中,对象可能会经历显著的变化。

0

  1. 将数据和相关函数绑定在一起的方法。
  2. 类有许多对象。
  3. 类是创建对象的模板。
  4. 它是逻辑存在。
  5. 当创建时,不分配内存空间。
  6. 定义(声明)只需创建一次。
  7. 使用“class”关键字声明类。

对象

  1. 面向对象环境中的基本运行时实体。
  2. 对象仅属于一个类。
  3. 对象是类的实现。
  4. 它是物理存在。
  5. 创建时分配内存空间。
  6. 根据需要可以创建多个实例。
  7. 对象是类的实例或变量。

0

现在对象可以是任何东西,比如公交车、汽车、手机或者人等。

例如,拿三星智能手机举例。 现在我们知道三星智能手机是一个对象。 要创建这个三星智能手机,我们需要一个蓝图(类)。 现在会有成千上万的三星智能手机,它们可能是不同的颜色,比如蓝色或黑色,也可能具有不同的内存或存储空间。 现在,三星智能手机带有蓝色、4GB内存、256GB存储空间,这是该对象的一个实例。

所以,

  • 类 - 三星智能手机的蓝图
  • 对象 - 三星智能手机
  • 实例 - 具有特定功能的三星智能手机

类是对象的蓝图,实例可以被视为对象的单个发生。


这并没有解释对象和实例之间的区别。请参考 https://dev59.com/iHE85IYBdhLWcg3wNwx3。 - Xypron

-1

对象是具有某些特征和行为的可识别实体。它代表可以存储数据及其相关函数的实体。

类是一组共享公共属性和关系的对象。它代表一组相似的对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接