Java类设计教学讲解课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Java类设计教学讲解课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 设计 教学 讲解 课件
- 资源描述:
-
1、 Java类的继承 方法的重写、覆盖 访问控制 super 关键字 多态性及其应用 Object 类及其主要方法 JavaJava类的继承类的继承 方法的重写、覆盖 多态性及其应用 成员访问控制 对象的创建和初始化细节 几种常用的Java类 为描述和处理个人个人信息,定义类Person:public class Person public String name;public int age;public Date birthDate;public String getInfo().PersonPerson+name:String+age:int+birthDate:Date+getInfo(
2、):String 为描述和处理学生学生信息,定义类Student:public class Student public String name;public int age;public Date birthDate;public String school;public String getInfo().StudentStudent+name:String+age:int+birthDate:Date+school:String+getInfo():String 通过继承继承,简化Student类的定义:public class Person public String name;publ
3、ic 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():StringStudentStudent+school:String类继承语法规则:class class ext
4、endsextends Java只支持单继承,不允许多重继承一个子类只能有一个直接父类一个父类可以派生出多个子类PersonPerson+name:String+age:int+birthDate:Date+getInfo():StringStudentStudent+school:StringSoldierSoldierOfficerOfficerGraduateGraduate+major:String+register():void父类子类孙子类子类继承了父类,就继承了父类的方法和属性。在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和方法。因而,子类通常比父类的功能更多子类
5、通常比父类的功能更多。在Java 中,继承的关键字用的是“extends”,即子类不是父类的子集,而是对父类的“扩展”。关于继承的规则:子类不能继承父类中私有的子类不能继承父类中私有的(private)(private)的成员变量和方法的成员变量和方法。1.(1)定义一个ManKind类,包括 成员变量 int sex 和 int salary;方法 void manOrWorman():根据sex的值显示“man”(sex=1)或者“women”(sex=0);方法 void employeed():根据salary的值显示“no job”(salary=0)或者“job”(salary!=
6、0)。(2)定义类Kids1继承ManKind,并包括 成员变量 int yearsOld;方法 printAge()打印 yearsOld 的值。(3)在Kids1类的main方法中实例化Kids1的对象 someKid,用该对象访问其父类的成员变量及方法。2.根据下图实现类。在TestCylinder类中创建Cylinder类的对象,设置圆柱的底面半径和高,并输出圆柱的体积。Circle (Circle (圆圆)-radius:double Circle():构造方法,将radius属性初始化为1+setRadius(double radius):void+getRadius():doub
7、le+findArea():double 计算圆的面积Cylinder (Cylinder (圆柱圆柱)-length:doubleCylinder():构造方法,将length属性初始化为1+setLength(double length):void+getLength():double+findVolume():double 计算圆柱体积 Java类的继承 访问控制访问控制 方法的重载、覆盖 super 关键字 多态性及其应用 Object 类及其主要方法修饰符修饰符同一个类同一个类同一个包同一个包子类子类整体整体privateprivateYesdefaultdefaultYesYesp
8、rotectedprotectedYesYesYespublicpublicYesYesYesYes可以对Java类中定义的属性属性和方法方法进行访问控制-规定不同的保护等级:public、protected、default、privateclass 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);protecte
9、d void fm3()System.out.println(in fm3()f3=+f3);public void fm4()System.out.println(in fm4()f4=+f4);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 ma
10、in(String args)int i;Parent p=new Parent();i=p.f2;/i=p.f3;i=p.f4;p.fm2();/p.fm3();p.fm4();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()_ publ
11、iccm2()_publiccm1()_private父类Parent和子类Child在同一包中定义时:Java类的继承 访问控制 方法的重写、覆盖方法的重写、覆盖 super 关键字 多态性及其应用 Object 类及其主要方法 在子类中可以根据需要对从父类中继承来的方法进行改造覆盖方法覆盖方法(方法的重置、重置、重写重写),在程序执行时,子类的方法将覆盖父类的方法。覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表和返回值类型。方法名称、参数列表和返回值类型。覆盖方法不能使用比被覆盖方法更严格的访问权限。覆盖方法不能使用比被覆盖方法更严格的访问权限。public class Person
12、 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 getInfo()public String getInfo()/覆盖方法 return Name:+name+nage:+age +nschool:+school;public static void main(String args)
13、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类的getInfo()方法Student s1=new Student();s1.getInfo();/调用Student类的getInfo()方法这是一种“多态性”:同名的方法,用不同的对象来区分调用的是哪一个方法。class Parent publ
14、ic public void method1()class Child extends Parent private private void method1()/非法,子类中的method1()的访问权限private比被覆盖方法的访问权限public弱public class UseBoth public void doOtherThing()Parent p1=new Parent();Child p2=new Child();Child p2=new Child();p1.method1();p2.method1();修改练习1中定义的类Kids1,在Kids1中重新定义employe
15、d()方法,覆盖父类ManKind中定义的employed()方法,输出“Kids should study and no job.”Java类的继承访问控制方法的重载、覆盖super super 关键字关键字super super 关键字关键字子类对象的实例化过程子类对象的实例化过程多态性及其应用Object 类及其主要方法 在Java类中使用super来引用父类的成分 super可用于访问父类中定义的属性 如果使用super关键字引用父类属性或者方法必须在方法块的第一行出现 super可用于调用父类中定义的成员方法 super可用于在子类构造方法中调用父类的构造方法 super的追溯不仅限
16、于直接父类 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 Oriental;public String getSchool()return school;public String getInfo()/调用父类的方法 return super.getInfosuper.getInfo()+nschool:+
17、school;1.修改练习3中定义的类Kids1中employed()方法,在该方法中调用父类ManKind的employed()方法,然后再输出“but Kids should study and no job.”2.修改练习1中定义的Cylinder类,在Cylinder类中覆盖findArea()方法,计算圆柱的表面积。考虑:findVolume方法怎样做相应的修改?在TestCylinder类中创建Cylinder类的对象,设置圆柱的底面半径和高,并输出圆柱的表面积和体积。附加题:在TestCylinder类中创建一个Circle类的对象,设置圆的半径,计算输出圆的面积。体会父类和子类
18、成员的分别调用。子类继承父类所有的成员变量和成员方法,但不继承父类的构造方法 在一个Java类中可以通过两种方式获得构造方法 使用系统默认的无参数构造方法 显式定义一个或多个构造方法 一旦显式定义了构造方法,则系统不再提供默认构造方法 在子类的构造方法中在子类的构造方法中可使用super(参数列表)语句调用父类的构造方法 如果子类的构造方法中没有显示地调用父类构造方法,也没有使用this关键字调用重载的其它构造方法,则系统默认调用父类无参数的构造方法 如果子类构造方法中既未显式调用父类构造方法,而父类中又没有无参的构造方法,则编译出错1 public class Person 2 3 priv
19、ate 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 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(Strin
20、g name)19 this(name,30);2021/22 1 public class Student extends Person 2 private String school;34 public Student(String name,int age,String s)5 super(namesuper(name,age),age);6 school=s;7 8 public Student(String namename,String s)9 super(name)super(name);10 school=s;11 12 public Student(String s)1313
展开阅读全文