|
本帖最后由 Fang0x378 于 2021-2-7 08:20 编辑
类和对象,成员静态和静态方法初学时我也搞不懂,现在基本理解了什么是静态成员和静态方法。看到有人有和我当初一样的疑惑,我来说说我是怎么理解的。抛砖引玉,欢迎大家补充,如果我说错了,请大佬们帮忙指正。
1.类就是一类东西的统称,“苹果类”,“橘子类”,“猪类”,“狗类”都是一个类,不是具体的一个东西。
2.对象是一个具体的东西,类实例化了就是对象,建一个变量就是类的实例化。比如有一个类叫“狗类”,我家的狗是一个对象,叫“我的狗”,你家的狗也是一个对象,叫“你的狗”。它们是一个实实在在的东西。
3.类的成员。类有好多成员,狗也有好多属性,比如“大小”,“年龄”,”颜色“,你的狗有这些属性,我的狗也有。这些属性是跟随对象的,每一条“狗”都有这些属性。这些属性可以理解为类的成员
4.静态成员,静态成员属于类本身的,而不再属于对象了,就是说具体的实物不可以拥有这个属性了。
比如说“狗类”有一个成员变量叫做“地球上狗的数量”,这个成员变量是地球上所有狗之和,不可能你的狗有“地球上狗的数量”这个属性,我的狗也有吧?没必要也不符合逻辑。那么这个“地球上狗的数量”这个成员就可以设置为静态成员,属于“狗类”,不再是具体的狗的属性了。但是每一只狗都知道“地球上狗的数量”,并且答案都是同一个数。
5.类的方法也类似
“狗类”一个公开方法叫“今天吃了几根骨头()”,返回今天吃的骨头的数量,你的狗吃了几根骨头只有“你的狗”知道,如果我想知道就得问你的狗,就这样用: 你的狗.今天吃了几根骨头() ,如果这样用:他的鞋子.今天吃了几根骨头() ,那就不行,你要针对性的问具体的对象。
6.静态方法,如果狗类很聪明,会做加法运算,他们有一个方法“加法运算(数值1,数值2)”,返回加法结果。我们只想知道加法运算的结果,不关心也不想知道是哪一只狗算的,就可以将此方法静态并公开,这样在其他类就可以使用 "狗类.加法运算(数值1,数值2)"。
如果狗类设置为“全局类”,可以直接使用 “加法运算(数值1,数值2)”。
7.取程序(),就是到启动类,可以访问启动类里的公开成员。这样就可以跨类访问对象。比如把窗口1,窗口2,窗口3 放到启动类公开,就可以在任何地方通过 “取程序().窗口1”,“取程序().窗口2” ,“取程序().窗口3”访问。
|
评分
-
查看全部评分
|