Java类设计.ppt
《Java类设计.ppt》由会员分享,可在线阅读,更多相关《Java类设计.ppt(50页珍藏版)》请在咨信网上搜索。
1、Java Java 类设计类设计本章内容本章内容Java类的继承方法的重写、覆盖访问控制super 关键字多态性及其应用Object 类及其主要方法本章内容本章内容JavaJava类的继承类的继承方法的重写、覆盖多态性及其应用成员访问控制对象的创建和初始化细节几种常用的Java类类的继承类的继承 (1)(1)为描述和处理个人个人信息,定义类Person:public class Person public String name;public int age;public Date birthDate;public String getInfo().PersonPerson+name:Stri
2、ng+age:int+birthDate:Date+getInfo():String类的继承类的继承 (2)(2)为描述和处理学生学生信息,定义类Student:public class Student public String name;public int age;public Date birthDate;public String school;public String getInfo().Student+name:String+age:int+birthDate:Date+school:String+getInfo():String类的继承类的继承 (3)(3)通过继承继承,简化
3、Student类的定义:public class Person public String name;public int age;public Date birthDate;public String getInfo().public class Student extends Person public String school;/Student类继承了父类Person的所有属性和方法,并增加了一个属性school。Person中的属性和方法,Student都可以利用。PersonPerson+name:String+age:int+birthDate:Date+getInfo():St
4、ringStudentStudent+school:String类的继承类的继承 (4)(4)类继承语法规则:class class extendsextends 类的继承类的继承 (5)(5)Java只支持单继承,不允许多重继承一个子类只能有一个直接父类一个父类可以派生出多个子类单继承举例单继承举例PersonPerson+name:String+age:int+birthDate:Date+getInfo():StringStudentStudent+school:StringSoldierSoldierOfficerOfficerGraduateGraduate+major:String
5、+register():void父类子类孙子类类的继承类的继承 (6)(6)子类继承了父类,就继承了父类的方法和属性。在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和方法。因而,子类通常比父类的功能更多子类通常比父类的功能更多。在Java 中,继承的关键字用的是“extends”,即子类不是父类的子集,而是对父类的“扩展”。关于继承的规则:子类不能继承父类中私有的子类不能继承父类中私有的(private)(private)的成员变量和方法的成员变量和方法。练习练习1 1 1.(1)1.(1)定义一个定义一个ManKindManKind类,包括类,包括 成员变量成员变量 int s
6、ex int sex 和和 int salaryint salary;方法方法 void manOrWorman()void manOrWorman():根据:根据sexsex的值显示的值显示“manman”(sex=1)(sex=1)或者或者“womenwomen”(sex=0)(sex=0);方法方法 void employeed()void employeed():根据:根据salarysalary的值显示的值显示“no jobno job”(salary=0)(salary=0)或者或者“jobjob”(salary!=0)(salary!=0)。(2)(2)定义类定义类Kids1Ki
7、ds1继承继承ManKindManKind,并包括,并包括 成员变量成员变量 int yearsOldint yearsOld;方法方法 printAge()printAge()打印打印 yearsOld yearsOld 的值。的值。(3)(3)在在Kids1Kids1类的类的mainmain方法中实例化方法中实例化Kids1Kids1的对象的对象 someKidsomeKid,用,用该对象访问其父类的成员变量及方法。该对象访问其父类的成员变量及方法。练习练习1 1 2.2.根据下图实现类。在根据下图实现类。在TestCylinderTestCylinder类中创建类中创建CylinderC
8、ylinder类的对类的对象,设置圆柱的底面半径和高,并输出圆柱的体积。象,设置圆柱的底面半径和高,并输出圆柱的体积。Circle (Circle (圆圆)-radius:double Circle():构造方法,将radius属性初始化为1+setRadius(double radius):void+getRadius():double+findArea():double 计算圆的面积Cylinder (Cylinder (圆柱圆柱)-length:doubleCylinder():构造方法,将length属性初始化为1+setLength(double length):void+getLe
9、ngth():double+findVolume():double 计算圆柱体积本章内容本章内容Java类的继承访问访问控制控制方法的重载、覆盖super 关键字多态性及其应用Object 类及其主要方法访问控制访问控制修饰符修饰符同一个类同一个类同一个包同一个包子类子类整体整体privateprivateYesdefaultdefaultYesYesprotectedprotectedYesYesYespublicpublicYesYesYesYes可以对Java类中定义的属属性性和方方法法进行访问控制-规定不同的保护等级:public、protected、default、private访问
10、控制举例访问控制举例(1)(1)class Parent private int f1=1;int f2=2;protected int f3=3;public int f4=4;private void fm1()System.out.println(in fm1()f1=+f1);void fm2()System.out.println(in fm2()f2=+f2);protected void fm3()System.out.println(in fm3()f3=+f3);public void fm4()System.out.println(in fm4()f4=+f4);访问控制举
11、例访问控制举例(2)(2)class Child extends Parent /设父类和子类在同一个包内private int c1=21;public int c2=22;private void cm1()System.out.println(in cm1()c1=+c1);public void cm2()System.out.println(in cm2()c2=+c2);public static void main(String args)int i;Parent p=new Parent();i=p.f2;/i=p.f3;i=p.f4;p.fm2();/p.fm3();p.fm
12、4();Child c=new Child();i=c.f2;/i=c.f3;i=c.f4;i=c.c1;/i=c.c2;c.cm1();/c.cm2();c.fm2();c.fm3();c.fm4()访问控制分析访问控制分析f2_defaultc2_publicf3_protectedf4_publicc1_private子类对象可以访问的数据子类的对象可以调用的方法fm2()_defaultfm3()_ protectedfm4()_ publiccm2()_publiccm1()_private父类Parent和子类Child在同一包中定义时:本章内容本章内容Java类的继承访问控制方法
13、的重写、方法的重写、覆盖覆盖super 关键字多态性及其应用Object 类及其主要方法覆盖方法覆盖方法 在子类中可以根据需要对从父类中继承来的方法进行改造在子类中可以根据需要对从父类中继承来的方法进行改造覆盖方法覆盖方法覆盖方法覆盖方法(方法的方法的重置、重写重置、重写重置、重写重置、重写),在程序执行时,子类的方法,在程序执行时,子类的方法将覆盖父类的方法。将覆盖父类的方法。覆盖方法覆盖方法必须必须和被覆盖方法具有相同的和被覆盖方法具有相同的方法名称、参数列表方法名称、参数列表方法名称、参数列表方法名称、参数列表和返回值类型。和返回值类型。和返回值类型。和返回值类型。覆盖方法不能使用比被覆
14、盖方法更严格的访问权限。覆盖方法不能使用比被覆盖方法更严格的访问权限。覆盖方法不能使用比被覆盖方法更严格的访问权限。覆盖方法不能使用比被覆盖方法更严格的访问权限。覆盖方法举例覆盖方法举例(1)(1)public class Person public String name;public int age;public String getInfo()public String getInfo()return Name:+name+n+age:+age;public class Student extends Person public String school;public String g
15、etInfo()public String getInfo()/覆盖方法 return Name:+name+nage:+age +nschool:+school;public static void main(String args)Student s1=new Student();s1.name=Bob;s1.age=20;s1.school=school2;System.out.println(s1.getInfo();/Name:Bob age:20 school:school2 Person p1=new Person();p1.getInfo();/调用Person类的getInf
16、o()方法Student s1=new Student();s1.getInfo();/调用Student类的getInfo()方法这是一种“多态性”:同名的方法,用不同的对象来区分调用的是哪一个方法。覆盖方法举例覆盖方法举例(2)(2)class Parent public public void method1()class Child extends Parent private private void method1()/非法,子类中的method1()的访问权限private比被覆盖方法的访问权限public弱public class UseBoth public void doO
17、therThing()Parent p1=new Parent();Child p2=new Child();Child p2=new Child();p1.method1();p2.method1();修改练习修改练习1 1中定义的类中定义的类Kids1Kids1,在,在Kids1Kids1中重新定义中重新定义employed()employed()方法,覆盖父类方法,覆盖父类ManKindManKind中定义的中定义的employed()employed()方法,输出方法,输出“Kids Kids should study and no job.should study and no jo
18、b.”练习练习2 2本章内容本章内容Java类的继承访问控制方法的重载、覆盖super super 关键字关键字super super 关键字关键字子类对象的实例化过程子类对象的实例化过程多态性及其应用Object 类及其主要方法关键字关键字supersuper 在在JavaJava类中使用类中使用supersuper来引用父类的成分来引用父类的成分 supersuper可用于访问父类中定义的属性可用于访问父类中定义的属性 如如果果使使用用supersuper关关键键字字引引用用父父类类属属性性或或者者方方法法必必须须在在方方法法块块的的第一行出现第一行出现 supersuper可用于调用父类
19、中定义的成员方法可用于调用父类中定义的成员方法 supersuper可用于在子类构造方法中调用父类的构造方法可用于在子类构造方法中调用父类的构造方法 supersuper的追溯不仅限于直接父类的追溯不仅限于直接父类关键字关键字 supersuper举例举例 public class Person private String name;private int age;public String getInfo()return Name:+name+nage:+age;public class Student extends Person private String school=New Or
20、iental;public String getSchool()return school;public String getInfo()/调用父类的方法 return super.getInfosuper.getInfo()+nschool:+school;1.1.修改练习修改练习3 3中定义的类中定义的类Kids1Kids1中中employed()employed()方法,在该方法方法,在该方法中调用父类中调用父类ManKindManKind的的employed()employed()方法,然后再输出方法,然后再输出“but but Kids should study and no job
21、.Kids should study and no job.”2.2.修改练习修改练习1 1中定义的中定义的CylinderCylinder类,在类,在CylinderCylinder类中覆盖类中覆盖findAreafindArea()()方法,计算圆柱的表面积。考虑:方法,计算圆柱的表面积。考虑:findVolumefindVolume方法怎样做方法怎样做相应的修改?相应的修改?在在TestCylinderTestCylinder类中创建类中创建CylinderCylinder类的对象,设置圆柱的底类的对象,设置圆柱的底面半径和高,并输出圆柱的表面积和体积。面半径和高,并输出圆柱的表面积和体
22、积。附加题:在附加题:在TestCylinderTestCylinder类中创建一个类中创建一个CircleCircle类的对象,类的对象,设置圆的半径,计算输出圆的面积。体会父类和子类成员设置圆的半径,计算输出圆的面积。体会父类和子类成员的分别调用。的分别调用。练习练习4 4构造方法不能继承构造方法不能继承 子子类类继继承承父父类类所所有有的的成成员员变变量量和和成成员员方方法法,但但不不继继承承父父类类的构造方法的构造方法 在一个在一个JavaJava类中可以通过两种方式获得构造方法类中可以通过两种方式获得构造方法 使用系统默认的无参数构造方法使用系统默认的无参数构造方法 显式定义一个或多
23、个构造方法显式定义一个或多个构造方法 一旦显式定义了构造方法,则系统一旦显式定义了构造方法,则系统不再不再提供默认构造方法提供默认构造方法调用父类构造方法调用父类构造方法 在在在在子子子子类类类类的的的的构构构构造造造造方方方方法法法法中中中中可可使使用用super(super(参参数数列列表表)语语句句调调用用父父类的构造方法类的构造方法 如如果果子子类类的的构构造造方方法法中中没没有有显显示示地地调调用用父父类类构构造造方方法法,也也没没有有使使用用thisthis关关键键字字调调用用重重载载的的其其它它构构造造方方法法,则则系系统统默默认调用父类认调用父类无参数无参数的构造方法的构造方法
24、 如如果果子子类类构构造造方方法法中中既既未未显显式式调调用用父父类类构构造造方方法法,而而父父类类中又没有无参的构造方法,则编译出错中又没有无参的构造方法,则编译出错调用父类构造方法举例调用父类构造方法举例 (1)(1)1 public class Person 2 3 private String name;4 private int age;5private Date birthDate;67 public Person(String name,int age,Date d)8 this.name=name;9 this.age=age;10 this.birthDate=d;11 12
25、 public Person(String name,int age)13 this(name,age,null);14 15 public Person(String name,Date d)16 this(name,30,d);17 18 public Person(String name)19 this(name,30);2021/22 调用父类构造方法举例调用父类构造方法举例 (2)(2)1 public class Student extends Person 2 private String school;34 public Student(String name,int age,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 设计
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【胜****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【胜****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。