主要内容类的继承继承时候的构造方法隐藏和覆盖重载.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:28 大小:229KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

主要内容类的继承继承时候的构造方法隐藏和覆盖重载.ppt

主要内容类的继承继承时候的构造方法隐藏和覆盖重载.ppt

预览

免费试读已结束,剩余 18 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

一、类的继承关系TrashCar中继承了Car中的两个方法何时选择继承性一个很好的经验:“BisA?”,如果是则让B做A的子类一、类的继承子类可以访问父类中的成员变量和成员方法?1、父类中的公有(public)成员,可以被子类直接访问。2、父类中的私有(private)成员,不能被子类直接访问,但是父类如果提供了公有的方法来访问其私有成员,则子类可以通过父类的公有方法来访问私有成员。e.gpublicclassB{publicinta=10;privateintb=11;protectintc=12;publicintgetB(){returnb;}}publicclassAextendsB{publicvoidtryVariables(){System.out.println(a+b+c+getB());}}二、继承时候的构造方法构造方法是一种特殊的方法,可以重载,不能从父类继承。有继承时,构造方法遵循的原则:1、子类不能继承父类的构造方法;2、子类可以调用父类的某一个构造方法super();super(name,adress);3、子类的构造方法没有明确调用父类的构造方法,则系统在执行子类的构造方法时会自动调用父类的默认构造方法(无参数的构造方法)4、若子类的构造方法中调用了父类的构造方法,则调用语句必须是子类构造方法的第一句publicclassPerson{protectStringname,address;publicPerson(){this(“”,“”);}publicPerson(StringaName,StringanAddress){name=aName;address=anAddress;}}//父类publicclassEmployeeextendsPerson{protectintemployeeNumber;protectStringworkPhoneNumber;publicEmployee(){this(0,“”);}publicEmployee(intaNumber,StringaPhoneNumber){employeeNumber=aNumber;workPhoneNumber=aPhoneNumber;}}publicclassProfessorextendsEmployee{protectedStringresearch;publicProfessor(){super();research=“”;}publicProfessor(intaNumber,StringaPhoneNumber,StringaResearch){super(aNumber,aPhoneNumber);research=aResearch;}}习题1、有关类Demo,哪句描述是正确的?publicclassDemoextendsBase{privateintcount;publicDemo(){System.out.println("ADemoobjecthasbeencreated");}protectedvoidaddOne(){count++;}}A当创建一个Demo类的实例对象时,count的值为0。B当创建一个Demo类的实例对象时,count的值是不确定的。C超类对象中可以包含改变count值的方法。DDemo的子类对象可以访问count。练习2、当编译和运行下列程序段时,会发生什么?classBase{}classSubextendsBase{}classSub2extendsBase{}publicclassCEx{publicstaticvoidmain(Stringargv[]){Baseb=newBase();Subs=(Sub)b;}}A通过编译和并正常运行。B编译时出现例外。C编译通过,运行时出现例外。三、隐藏和覆盖1、属性的隐藏:子类中重新定义了父类的属性,且子类中属性的类型和名字同父类相同,则子类中隐藏了父类的同名属性。2、方法的隐藏:子类中重新定义了父类的方法,且子类中方法的返回值类型、方法名以及方法的参数的个数、顺序、类型完全与父类相同,则子类中隐藏了父类的同名方法。classSuperHide{inta=1;intb=2;publicvoidmyPrint(){System.out.println("super");}}classHideTestextendsSuperHide{inta=3;publicv