类和对象 类 类是一个模板,它描述一类对象的行为和状态。 对象 对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。CBrother中的类 类可以看成是创建CBrother对象的模板。一个类可以包含以下内容 成员变量 成员变量是定义在类中,方法体之外的变量,这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。 成员函数 成员函数是类的方法,每个实例化都有这些方法 构造函数 构造函数是一个和类命相同函数,但不是必须要写的。如果定义了构造函数,会在实例化时调用一次classpeople{varName;varAge;varNation;varSex;functionpeople(name,age,nation){Namename;Ageage;Nationnation;}functionspeak(){varspeakvaluehello!mynameisName。imfromNation。imAge;if(Sex0){speakvalue。imagirl。;}else{speakvalue。imaboy。;}printspeakvalue;}}创建对象 使用关键字new来创建一个对象,对象通过。来访问成员变量和成员方法functionmain(parm){vartonyObjnewpeople(tony,18,england);tonyObj。Sex1;varhanmeimeiObjnewpeople(hanmeimei,18,china);hanmeimeiObj。Sex0;tonyObj。speak();hanmeimeiObj。speak();} 结果:hello!mynameistony。imfromengland。im18。imaboy。hello!mynameishanmeimei。imfromchina。im18。imagirl。类的继承 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。class父类{}class子类extends父类{} 例子:classpeopleExextendspeople{varHobby;functionpeopleEx(name,age,nation,sex,hobby){super(name,age,nation);子类通过super关键字访问父类构造函数Sexsex;Hobbyhobby;}functionspeak()重载了父类的方法{super。speak();调用父类同名方法printIlikeHobby;}}functionmain(parm){vartonyObjnewpeopleEx(tony,18,england,1,football);varhanmeimeiObjnewpeopleEx(hanmeimei,18,china,0,reading);tonyObj。speak();hanmeimeiObj。speak();} 结果:hello!mynameistony。imfromengland。im18。imaboy。Ilikefootballhello!mynameishanmeimei。imfromchina。im18。imagirl。Ilikereading虚函数 在普通的函数前面加上virtual关键字,就声明了一个虚函数。虚函数可以不实现,就称为纯虚函数。有纯虚函数的类为虚类,不能被构造。 例子:classpeoplebase{virtualfunctiongetName();virtualfunctiongetSex(){return1;}virtualfunctiongetNation(){returnchina;}virtualfunctiongetAge();virtualfunctiongetHobby();functionspeak(){varspeakvaluehello!mynameisgetName()。ifrom1getNation()。imgetAge();if(getSex()0){speakvalue。imagirl。;}else{speakvalue。imaboy。;}printspeakvalue;printIlike;getHobby();}}classpeopleTonyextendspeoplebase{virtualfunctiongetName(){returntony;}virtualfunctiongetNation(){returnenglish;}virtualfunctiongetAge(){return18;}virtualfunctiongetHobby(){returnfootball;}}classpeopleHanmeimeiextendspeoplebase{virtualfunctiongetName(){returnhanmeimei;}virtualfunctiongetSex(){return0;}virtualfunctiongetNation(){returnchina;}virtualfunctiongetAge(){return18;}virtualfunctiongetHobby(){returnreading;}}functionmain(parm){vartonyObj2newpeopleTony();varhanmeimeiObj2newpeopleHanmeimei();tonyObj2。speak();hanmeimeiObj2。speak();} 结果:hello!mynameistony。ifrom1english。im18。imaboy。Ilikefootballhello!mynameishanmeimei。ifrom1china。im18。imagirl。Ilikereading