国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

理解java和python類變量以及類的成員變量

2019-11-26 14:35:44
字體:
供稿:網(wǎng)友

最可怕的不是犯錯(cuò)而是一直都沒發(fā)現(xiàn)錯(cuò)誤,直到現(xiàn)在我才知道自己對類變量的理解有問題。
大概可能也許是因?yàn)椴怀S妙愖兞康脑虬桑恢睕]有發(fā)現(xiàn)這個(gè)問題。最近在看C++時(shí)才知道了類變量到底是什么
以前我一直覺得類變量和成員變量的唯一區(qū)別是類變量可以通過類名直接訪問,是靜態(tài)的。而成員變量需要實(shí)例化一個(gè)類后通過實(shí)例來訪問。
萬萬沒想到忽視了類變量在一個(gè)類中只有一個(gè),各個(gè)實(shí)例中的都是同一個(gè)的,在一個(gè)實(shí)例中修改會影響其他實(shí)例中的類變量...(雖然平常也沒有因?yàn)檫@個(gè)而引起什么bug,但是還是要補(bǔ)上認(rèn)知的漏洞)。
這里有用java和python寫的2個(gè)例子:

public class OO{  public static String s;  public String m;  static{    s = "Ever";  }  public static void main(String[] args){    OO o1 = new OO();    OO o2 = new OO();    o1.m = "Once";    //不同實(shí)例中的類變量值/地址相同    System.out.println(o1.s);    System.out.println(o2.s);    System.out.println(o1.s.hashCode());    System.out.println(o2.s.hashCode());    o1.s = "123";    System.out.println(o2.s);//更改類變量后影響了其他實(shí)例    System.out.println(o1.m.hashCode());    System.out.println(o2.m.hashCode());//NullPointerException    //成員變量具有不同的地址  }}


#!/bin/pythonclass B:  def whoami(self):    print("__class__:%s,self.__class__:%s"%(__class__,self.__class__))class C(B):  count = 0  def __init__(self):    super(C,self).__init__()    self.num = 0  def add(self):    __class__.count += 1    self.num += 1  def print(self):    print("Count_Id:%s,Num_Id:%s"%(id(__class__.count),id(self.num)))    print("Count:%d,Num:%d"%(__class__.count,self.num))i1 = C()i2 = C()i1.whoami()i2.whoami()#i1的成員變量增加了1次,i2的成員變量增加了2次,類變量共增加了3次i1.add()i2.add()i2.add()i1.print()i2.print()

以上就是本文的全部內(nèi)容,明天假期就結(jié)束了,希望大家積極地投入到工作中,繼續(xù)關(guān)注小編為大家分享的文章。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 湄潭县| 平远县| 望奎县| 伊春市| 保康县| 永安市| 平泉县| 手游| 汉寿县| 四平市| 桂东县| 瑞昌市| 英德市| 福海县| 广宁县| 清新县| 西畴县| 阿克苏市| 玉溪市| 陆川县| 安福县| 徐州市| 永清县| 泗阳县| 绥江县| 白河县| 宁城县| 台江县| 安达市| 安泽县| 延寿县| 广昌县| 高青县| 嘉禾县| 庆云县| 甘德县| 开封市| 阜宁县| 来凤县| 麟游县| 宜丰县|