问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎样深入理解java面向对象?

发布网友 发布时间:2022-04-21 13:46

我来回答

2个回答

懂视网 时间:2022-05-11 01:55

我们熟悉了对象和类的基本概念。我们将进一步拓展,以便能实际运用对象和类。

调用类的其它信息

上一讲中提到,在定义方法时,必须有self这一参数。这个参数表示某个对象。对象拥有类的所有性质,那么我们可以通过self,调用类属性。

class Human(object):
 laugh = 'hahahaha'
 def show_laugh(self):
 print self.laugh
 def laugh_100th(self):
 for i in range(100):
  self.show_laugh()
li_lei = Human()  
li_lei.laugh_100th()

这里有一个类属性laugh。在方法show_laugh()中,通过self.laugh,调用了该属性的值。

还可以用相同的方式调用其它方法。方法show_laugh(),在方法laugh_100th中()被调用。

通过对象可以修改类属性值。但这是危险的。类属性被所有同一类及其子类的对象共享。类属性值的改变会影响所有的对象。

__init__()方法

__init__()是一个特殊方法(special method)。Python有一些特殊方法。Python会特殊的对待它们。特殊方法的特点是名字前后有两个下划线。

如果你在类中定义了__init__()这个方法,创建对象时,Python会自动调用这个方法。这个过程也叫初始化。

class happyBird(Bird):
 def __init__(self,more_words):
 print 'We are happy birds.',more_words
summer = happyBird('Happy,Happy!')

这里继承了Bird类,它的定义见上一讲。

屏幕上打印:

We are happy birds.Happy,Happy!

我们看到,尽管我们只是创建了summer对象,但__init__()方法被自动调用了。最后一行的语句(summer = happyBird...)先创建了对象,然后执行:

summer.__init__(more_words)

'Happy,Happy!' 被传递给了__init__()的参数more_words

对象的性质

我们讲到了许多属性,但这些属性是类的属性。所有属于该类的对象会共享这些属性。比如说,鸟都有羽毛,鸡都不会飞。

在一些情况下,我们定义对象的性质,用于记录该对象的特别信息。比如说,人这个类。性别是某个人的一个性质,不是所有的人类都是男,或者都是女。这个性质的值随着对象的不同而不同。李雷是人类的一个对象,性别是男;韩美美也是人类的一个对象,性别是女。

当定义类的方法时,必须要传递一个self的参数。这个参数指代的就是类的一个对象。我们可以通过操纵self,来修改某个对象的性质。比如用类来新建一个对象,即下面例子中的li_lei, 那么li_lei就被self表示。我们通过赋值给self.attribute,给li_lei这一对象增加一些性质,比如说性别的男女。self会传递给各个方法。在方法内部,可以通过引用self.attribute,查询或修改对象的性质。

这样,在类属性的之外,又给每个对象增添了各自特色的性质,从而能描述多样的世界。

class Human(object):
 def __init__(self, input_gender):
 self.gender = input_gender
 def printGender(self):
 print self.gender
li_lei = Human('male') # 这里,'male'作为参数传递给__init__()方法的input_gender变量。
print li_lei.gender
li_lei.printGender()

在初始化中,将参数input_gender,赋值给对象的性质,即self.gender。

li_lei拥有了对象性质gender。gender不是一个类属性。Python在建立了li_lei这一对象之后,使用li_lei.gender这一对象性质,专门储存属于对象li_lei的特有信息。

对象的性质也可以被其它方法调用,调用方法与类属性的调用相似,正如在printGender()方法中的调用。

总结

通过self调用类属性

__init__(): 在建立对象时自动执行

类属性和对象的性质的区别

热心网友 时间:2022-05-10 23:03

java是一种面向对象的语言。也就是说,这种程序设计,把现实中的所有的问题都当做一个个对象来解决,每个对象都有其独立的属性和方法,每个对象之间具有一定的联系,在面向对象设计编程中,不需要考虑对象的实现细节,每个对象都有自己的任务和功能。比如说汽车是一个对象,飞机也是一个对象;汽车具有后备箱、方向盘和发动机等属性,飞机有机翼、操作台等等属性,如果程序想实现能够根据汽车状态输出相应语句,比如前进、后退,那么实现这个功能的具体代码成为方法,对应的飞机也可以有自己的方法比如起飞、下降等。飞机和汽车都属于交通工具,他们某些地方具有共性就是有联系的意思,交通工具包含汽车飞机等对象
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 女士洗面奶男士能用吗? java: 谈谈你对面向对象的理解 Java面向对象的理解? 什么牌子的氨基酸洗面奶好用些? JAVA中什么是面向对象 洁面泡沫和洁面乳有什么区别 13岁用什么洗面奶好? 什么样的洗面奶好用? 洁面乳是洗面奶吗? 面膜和洗面奶有什么区别?用的时候要注意些什么? 洗面奶可以去黑头吗 洗面奶的好处与坏处 氨基酸洗面奶怎么用 洗面奶起什么作用? 洗面奶有哪些成分是不安全的? 为什么我用清水冲洗洗面奶的时候搓不动脸呢 洗面奶一天洗几次效果最好? 洗手台上的洗面奶自己晃动起来,是大理石的洗手台!!放在最右边,而且很轻快用完了,然后突然自己左右晃 泡泡洗面奶怕动吗 红色羽绒服袖子脏了怎么洗 这么就说Java是面向对象了?怎么解释? Java中面向对象到底是什么意思?求解,谢谢。 如何理解java的面向对象思想 java面向对象思想如何理解? 在JAVA中怎样理解面向对象? java中面向对象怎么理解 Java 面向对象理解? Java中的面向对象是什么意思? Java面向对象怎么样理解的 Java中面向对象到底是什么意思 Java:什么是面向对象 java中什么是面向对象啊? 3根380V加热管 星型接法和三角接法 接线图 三相电加热棒为什么会叫? 三相电加热管有五个电加热棒的接线图 三相电接五根加热棒接线图 380V三相线任意两相接各接3个220V加热棒,应该怎么接呢? 三相电加热管有五个电加热棒的接线图不知道如何使用 请问三相电加热棒能直接放在水里加热会发生什么后果? 三相电三支加热棒单独控制接线图