程序开发中什么是对象?

程序开发中什么是对象?,第1张

类对象

1.类对象支持两漏如种 *** 作:属性引用和实例化。

属性引用 使用和 Python 中所有的属性引用一样的标准语法:obj.name。类对象创建后,类命名空间中所有的命名都是有效属性名。所以如果类定义是这样:

class MyClass:

"""A simple example class"""

i = 12345

def f(self):

return 'hello world'

2.那么 MyClass.i 和 MyClass.f 是有效的属性引用,分别返回一个整数和一个方法对象。也可以对类属性赋值,你可以通过给 MyClass.i 赋值来修改它。 __doc__ 也是一个有效的属性,返回类的文档字符串:"A simple example class"。

类的 实例化 使用函数符号。只要将类对象看作是一个返回新的类实例的无参数函数即可。例如(假设沿用前面的类):

x = MyClass()

3.以上创建了一个新的类 实例 并将该对喊枯象赋给局部变量 x。

这个实例化 *** 作(“调用”一个类对象)来创建一个空的对象。很多类都倾向于将对象创建为有初始状态的。因此类可能会返渗启定义一个名为 __init__() 的特殊方法,像下面这样:

def __init__(self):

self.data = []

4.类定义了 __init__() 方法的话,类的实例化 *** 作会自动为新创建的类实例调用 __init__() 方法。所以在下例中,可以这样创建一个新的实例:

x = MyClass()

5.当然,出于d性的需要,__init__() 方法可以有参数。事实上,参数通过 __init__() 传递到类的实例化 *** 作上。例如,

>>>class Complex:

... def __init__(self, realpart, imagpart):

... self.r = realpart

... self.i = imagpart

...

>>>x = Complex(3.0, -4.5)

>>>x.r, x.i

(3.0, -4.5)

对象在C语言中广义上指的是在内存中的一段有意义的区域。狭义上讲,对象具有特定长度的类型,可以称作为对象类型,但其函数不具有特定长度,所以不是对象类型。

面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数唯唯据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。

扩展资料:

C语言软件设计时经常使用面向对象的方法:

面向对象技术在不同级别上促进了共享。同一类中的共享,同一类中的对象有着相同数据结构。这些对象之间是结构、行为特征的共享关系。

在同一应用中共享。在同一应用的类启桐层次结构中,存在继承关系的各相似子类中,存在数据结构和行为的继承,使各相似子类共享共同的结构和行为。使用继承来实现代码的共享,这也悄山坦是面向对象的主要优点之一。

在不同应用中共享。面向对象不仅允许在同一应用中共享信息,而且为未来目标的可重用设计准备了条件。通过类库这种机制和结构来实现不同应用中的信息共享。

参考资料来源:百度百科-对象

对象和变量这两个概念莫要搞乱,颈是颈,椎是椎,虽然两者都对应着一块内存,但是从不同的角度去理解内存就会产生不同的意义。下面就让我来为大家介绍一下吧,希望大家喜欢。

变量与对象

变量:所谓变量就是一种定义,通过定义编译器将会开辟一段空间,并将这段内存空间和这个变量的名字捆绑在一起。从这个意思去理解,其实说白了:变量名就是内存在代码中可视化的一个符号。也就是说,如int a,a只是内存中某段地址在代码中可视化的一个符号,a本身作为符号并不占用空间,占用空间的是a所对应着的那个变量,通过a这个符号我们可以引用到该变量在内存中的位置。就好比是人和名字的关系,人作为一个真真正正的实体,是占用地球的物理空间的,是一个真实的存在,而这个人的名字只是代表了这个人的一个符号,本身并没有占用地球的物理空间,只是在他妈把他生下来的时候,把人这个实体和名字捆绑在了一起,因此,我们引用这个人的名字的时候,就等于我们找到了这个人。

对象:对象就是内存中一段有类型的区域。从这句话的描述上来看,对象至于变量,似乎更关注的是这对内存的类型,而不是名字。不能说变量就是对象,或者对象就是变量,严格来说,对象就是用来描述变量的。一点佐证是,C++中的临时变量的概念,如传参时生成的临时租禅变量,该变量在内存中存在,但是是没有名字的,因此在代码中无法可视化,我们就无法通过名字去引用这个临时变量。

两者的区别与联系

从上面的两个描述中我们可以看到,两者都是用弊李尘来描述一段内存的,但是是从不同的角度去描述:

变量更强调的是变量名这个符号的含义,更强调名字与内存的联系,而不必关注这段内存是什么类型,有多少字节长度,只关注这个变量名a对应着某段内存。

而对象的描述更强调的是内扰晌存的类型而不在乎名字,也就是说,从对象的角度去看内存,就需要清楚这段内存的字节长度等信息,而不关注这个对象在代

举例:

int a

如果我们说a是个变量,那我们关注的只是a这个名字对应着一块内存,当我们引用a时,我们能明确的知道我们引用的是a这个名字所对应的内存空间,而不是别的,也不去关注这个a的内存是个int啊char啊之类的什么类型。如果我们说a是个对象,则我们需要知道这个对象具体是什么类型,当我们引用并 *** 作a的时候,就能根据类型信息做一些符合类型语义的 *** 作,而不是暴力访问内存,任意解析内存中的数据码中是否有一个变量名来引用到这段内存。

对象与对象变量

要想使用对象,就必须首先构造对象,并指定其初始状态。然后,对对象施加方法。

在Java程序设计语言中,使用构造器(constructor)构造新实例。构造器是一种特殊的方法,用来构造并初始化对象。下面看一个例子。在标准Java类库中包含一个Data类。它的对象将描述一个时间点,例如"December 31,1999,23:59:59 GMT".

构造器的名字应该与类名相同,因此Data类的构造器名为Data。要想构造一个Data对象,需要在构造器前面加上new *** 作符,如下所示:

new Data()

这个表达式构造了一个新对象。这个对象被初始化为当前的日期和时间。

如果需要的话,也可以将这个对象传递给一个方法:

System.out.println(new Data())

相反,也可以将一个方法应用于刚刚构造的对象上。Data类中有一个toString方法。这个方法将返回日期的字符串描述。下面的语句可以说明如何将toString方法应用于新构造的Data对象上。

String s=new Data().toString()

在这两个例子中,构造的对象仅使用了一次。通常,希望构造的对象可以被多次使用,因此,需要将对象存放在一个变量中

Data birthday=new Data()

在对象与对象变量之间存在着一个重要的区别。例如,语句

Data deadline//deadline doesn't refer to any object

定义了一个对象变量deadline,它可以引用Data类型的对象。但是,一定要认识到:变量deadline不是一个对象,实际上也没有引用对象。此时,不能将任何Data方法应用于这个变量上。语句

s=deadline.toString()

将产生编译错误。。

必须首先初始化变量deadlin.这里有两个选择。当然可以用新构造的对象初始化这个变量:

deadline=new Data()

或者让这个变量引用一个已存在的对象:

deadline=birthday

选择,这个两个变量引用同一个对象

一定要认识到:一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。

在Java中,任何对象变量的值都是对存储在另外一处的一个对象的引用。new *** 作符的返回值夜是一个引用。下列语句:

Data deadline=new Data()

有两个部分。表达式new Data()构造了一个Data类型的对象,并且它的值是对新创建对象的引用。这个引用被存储在变量deadli中。

可以显式地将对象变量设置为空(null),表明和这个对象变量目前并没有引用任何对象。

deadline=null

...

if(deadline!=null)

System.out.println(deadline)

如果将一个方法应用于一个值为null的对象上,就会产生运行错误。

birthday=null

String s=birthday.toString()//runtime error!

变量不会自动地初始化为null,而必须对他们进行初始化,调用new或将它们设置为null。

猜你喜欢

1. 值类型和引用类型的区别

2. Java中变量和常量之间的区别

3. 什么是对象数组 

4. 类方法和实例方法的区别

5. 什么是面向对象 


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12496134.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-25
下一篇2025-08-25

发表评论

登录后才能评论

评论列表(0条)

    保存