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

Oop 类和对象实例之间有什么区别?,oop,language-agnostic,Oop,Language Agnostic,类是单个单元中方法和变量的绑定。 对象是类的实例 这些是编程书籍中类和对象的定义。我的朋友说类是对象的蓝图。对象是蓝图的真实“对象”。他举了一个例子:如果公司是一个类,那么INFOSYS、CTS和TCS等都是对象。每当我想到类和对象时,这些定义就把我弄糊涂了。如果channel是一个类,那么该类的对象是什么?如果水是一个类,那么什么是类的对象呢?你能澄清一下吗?如果频道是一个班级,开始体育、BBC和ESPN是它的目标。 如果水是一个类,“新鲜石灰水”和“汤”是它的对象 虽然你可能会觉得这个解释含

类是单个单元中方法和变量的绑定。
对象是类的实例


这些是编程书籍中类和对象的定义。我的朋友说类是对象的蓝图。对象是蓝图的真实“对象”。他举了一个例子:如果公司是一个类,那么INFOSYS、CTS和TCS等都是对象。每当我想到类和对象时,这些定义就把我弄糊涂了。如果channel是一个类,那么该类的对象是什么?如果水是一个类,那么什么是类的对象呢?你能澄清一下吗?

如果频道是一个班级,开始体育、BBC和ESPN是它的目标。 如果水是一个类,“新鲜石灰水”和“汤”是它的对象

虽然你可能会觉得这个解释含糊不清,但这是我能想到的答案

以下是您了解和区分类的方法:

说你有一辆“车”

它的目标是现代、福特、铃木。
它将有相同的方法,但不同的设计->这就是如何将对象和类与现实世界联系起来。

我会给你一个经典的解释,你可以在各地找到不同的版本

课堂就像一幅蓝图。如果你想造一辆车,你首先需要的是一个计划,这是一门课。该计划将描述“方法”,如
制动
鸣叫
。它还将描述汽车的各种部件。这些都是变量

car对象是car类的实例化。一辆车可以有很多这样的车

例如:

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就是这种情况)。这样想:所有的蓝图都有一些共同点。在blueprint的类(其本身就是一个blueprint)中描述了这些常见的东西

然后,就“水”这一类而言,你可以根据你想做的事情,以几种方式接近它:

方式1:

更确切地说,我们有一个叫做Liquid的类,其中包含描述粘度、气味、密度、体积等物质的变量。水就是一个例子。橙汁也是

方式2:


假设你在做一个游戏,游戏中有一堆由不同地形组成的方块。然后你可以有诸如草、水、岩石等课程(比如Minecraft)。然后,您可以让水类实例(水对象)占据地图上的特定位置

在现实世界中,您经常会发现许多相同类型的单独对象。可能存在数千个其他渠道,所有渠道的品牌和型号都相同。每个通道都是从同一套蓝图构建的,因此包含相同的组件。在面向对象的术语中,我们说您的通道是称为通道的对象类的实例。类是创建单个对象的蓝图

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);
    }
}
此类的设计基于前面对通道对象的讨论。字段typr、employeeCount表示对象的状态,方法(setType、addEmployer、removeEmployer等)定义对象与外部世界的交互

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

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();


    }
}
此测试的输出打印两个通道:

类型:新闻员工人数:500


类型:SPORT employee count:300

类指定其实例的行为

类也是类的实例(类的类被命名为“元类”)

类是一种抽象。通过查找应用于一组对象的泛型属性来查找类

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

承认班级(教室外)需要经验


阅读Alan Kay的任何文章,他是对象技术的发明者,也是Smalltalk的发明者之一,Smalltalk是目前唯一的纯对象环境。

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


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

我没有太多编程经验,但我的一个朋友举了一个定义类和对象的好例子。 我会尽可能地使用人类语言

骑一匹马。是什么让你知道这个动物是马而不是。。。狗?因为它有四条腿,它是一种很大的动物,它非常强壮并且能跑。好吧,你刚刚在脑子里定义了一个“马”类! 现在,你将看到一匹叫“波利亚娜”的白色母马和一匹叫“恶魔”的黑色公马。你一看到它们就知道它们是马,所以它们属于“马”类。 是什么让他们与众不同?性别和颜色。。。这些是“horse”类的属性。 “Pollyanna”和“Demon”是两个物体,它们是真实的东西,你可以触摸和骑着它们。它们的性质、性别和颜色也不同。波利亚娜是白人和女性。恶魔是黑人和男性。这些定义的属性是一个对象与另一个对象的区别。一匹马与另一匹马分开。但它们仍然属于同一类:它们永远是马

现在更技术化了。。。类是对某事物更抽象的定义。蓝图。对象是属于该类的真实对象。当您从一个类创建一个新对象时,您正在实例化一个对象(也称为创建实例)

希望这能帮上忙,如果不抱歉的话。。。正如我之前所说,