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

时间:2012-12-08 06:44:23

标签: oop language-agnostic

  

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

这些是编程书籍中的类和对象的定义。我的朋友说一个类是一个对象的蓝图。对象是蓝图的真实“事物”。他举了一个例子:如果 Company 是一个类,那么INFOSYS,CTS和TCS等就是对象。每当我想到类和对象时,这些定义都会让我感到困惑。如果channel是一个类,那么该类的对象是什么?如果水是一个阶级,什么是阶级的对象?你能说清楚吗?

11 个答案:

答案 0 :(得分:14)

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

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

以下是了解和区分课程的方法:

假设您有一个班级“CAR”

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

答案 1 :(得分:5)

一个类指定其实例的行为。

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

一个类是一个抽象。您可以通过查找应用于一组对象的通用属性来查找类。

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

课堂(课堂外)的认可需要经验。

阅读Alan Kay的任何内容,他是Object Technology的发明者,也是Smalltalk的发明者之一,Smalltalk是迄今为止唯一的纯对象环境。

答案 2 :(得分:3)

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

带上一匹马。是什么让你知道这种动物是一匹马而不是一只狗?因为它有四条腿,它是一种很大的动物,它非常强壮,它可以运行。好吧,你刚刚在脑中定义了一个“马”课程! 现在,你将会看到一匹叫做“Pollyanna”的白色雌性马和一只叫做“恶魔”的黑色雄性马。一旦你看到他们就知道他们是马,所以他们属于“马”类。 是什么让他们不同?性别和颜色......这些都是“马”类的属性。 'Pollyanna'和'恶魔'是两个物体,它们是真实的东西,你可以触摸和骑行的东西。它们的属性,性别和颜色也不同。 Pollyanna是白人和女性。恶魔是黑人和男性。这些定义的属性是区分一个对象与另一个对象的区别。另一匹马。但他们仍属于同一类:他们总是马!

现在更加技术化......一个类是一个更抽象的定义。蓝图。对象是属于该类的真实对象。当您从类中创建新对象时,您正在实例化对象(也就是创建实例)。

希望这会有所帮助,如果它没有抱歉......正如我之前所说,我没有太多的编程经验:)

詹卢卡

答案 3 :(得分:2)

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

一个类就像一个蓝图。假设你想建造一辆汽车,你需要的第一件事是计划,这就是班级。该计划将描述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的类,其变量描述粘度,气味,密度,体积等等。水就是这个例子。橙汁也是如此

方式2:

说你正在整理一个由不同地形组成的一堆游戏。然后你可以有草,水,岩石等课程(想想Minecraft)。然后,您可以让水类实例(水对象)占据地图上的特定位置。

答案 4 :(得分: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方法。那是因为它不是一个完整的应用程序;它只是可能在应用程序中使用的频道的蓝图。创建和使用新的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员工人数:300

答案 5 :(得分:0)

in grammar Common Noun是Class,Proper Noun is Object。

答案 6 :(得分:0)

对象具有有限的生命周期,对象被创建并最终被破坏。同样在该生命周期中,对象可能会发生重大变化

答案 7 :(得分:0)

<强>类

  1. 将数据和相关功能绑定在一起的方法。
  2. 类有很多对象。
  3. Class是用于创建对象的模板。
  4. 这是合乎逻辑的存在。
  5. 创建内存空间时未分配。
  6. 定义(声明)创建一次。
  7. 使用“class”关键字声明类。
  8. <强>对象

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

答案 8 :(得分:0)

现在的物体可以是公共汽车,汽车,汽车或人等物体。

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

所以

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

类是对象的蓝图,实例可以视为对象的单次出现。

答案 9 :(得分:-1)

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

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

答案 10 :(得分:-1)

术语类和对象与另一个术语明确相关,但每个术语都有其独特的含义。让我们首先解释一下术语的含义。类是指用于定义任何给定类的行为的实际写入的代码片段。因此,类是一个静态的代码片段,其中包含在执行orogram期间不会更改的属性。对象是指类的实际实例实例。每个ibhect必须属于一个类