JAVA程序员培训定制课程c06.ppt
《JAVA程序员培训定制课程c06.ppt》由会员分享,可在线阅读,更多相关《JAVA程序员培训定制课程c06.ppt(43页珍藏版)》请在三一办公上搜索。
1、第六章,Java类设计,2,本章内容,Java类的继承方法的重载、重写多态性及其应用成员访问控制对象的创建和初始化细节几种常用的Java类,3,类的继承(1),为描述和处理个人信息,定义类Person:,public class Person public String name;public int age;public Date birthDate;public String getInfo().,4,类的继承(2),为描述和处理学生信息,定义类Student:,public class Student public String name;public int age;public Da
2、te birthDate;public String school;public String getInfo().,5,类的继承(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;,6,类的继承(4),类继承语法规则:class extends*Object类是所有Java类的最高层父类
3、Java只支持单继承,不允许多重继承一个子类只能有一个父类一个父类可以继承出多个子类,7,单继承举例(1),8,单继承举例(2),public class TestAnimals public static void main(String args)Horse b=new Horse();System.out.println(b.getI();class Animal private int i=1;public int getI()return i;public void setI(int i)this.i=i;class Horse extends Animal int i=2;,9,访
4、问控制,可以对Java类中定义的属性和方法进行访问控制-规定不同的保护等级:,10,访问控制举例(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()Syst
5、em.out.println(in fm4()f4=+f4);,11,访问控制举例(2),class Child extends Parentprivate 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.f
6、m2();/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();,12,访问控制分析,f1_private,f2_default,c2_public,f3_protected,f4_public,c1_private,内存空间中子类对象携带的数据,子类的对象可以调用的方法,fm2()_default,fm3()_ protected,fm4()_ public,cm2()_public,cm1()_private,父类Parent和子类Child在同一包中定义时:,13
7、,Ex,改造上述应用程序后,分析其结果,体会Java访问控制机制,可分下述几种情形:应用程序入口main()方法定义在一个非子类中Parent和Child类位于不同包中Parent和Child类位于不同包中,main()方法定义在不同包内的非子类中,14,方法的重写,在子类中可以根据需要对从父类中继承来的方法进行改造-方法的重写重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型重写方法不能使用比被重写方法更严格的访问权限,15,方法重写举例(1),public class Person protected String name;protected int age;protect
8、ed Date birthDate;/java.util包中定义过类Datepublic String getInfo()return Name:+name+n+age:+age;public class Student extends Person protected String school;public String getInfo()return Name:+name+nage:+age+nschool:+school;,16,方法重写举例(2),public class Parent public void method1()public class Child extends P
9、arent private void method1()/illegalpublic class UseBoth public void doOtherThing()Parent p1=new Parent();Child p2=new Child();p1.method1();p2.method1();,17,关键字super,在Java类中使用super来引用父类的成分super可用于访问父类中定义的属性super可用于调用父类中定义的成员方法super可用于在子类构造方法中调用父类的构造方法super的追溯不仅于直接父类,18,关键字super举例,public class Person
10、 private String name;private int age;private Date birthDate;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.getInfo()+nschool:+school;,19,多态性(
11、1),多态-在Java中,子类的对象可以替代父类的对象使用一个对象只能有一种确定的数据类型一个引用类型变量可能指向(引用)多种不同类型的对象Person p=new Student();Object o=new Person();o=new Student();,20,多态性(2),一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法Student m=new Student();m.school=pku;/合法Person e=new Student();e.school=pku;/非法,21,虚方法调用(Virtual Method I
12、nvocation),正常的方法调用 Person e=new Person();e.getInfo();Student e=new Student();e.getInfo();虚拟方法调用(多态情况下)Person e=new Student();e.getInfo();编译时类型和运行时类型,22,多态性应用举例(1),同类收集(homogenous collections)MyDate m=new MyDate2;m0=new MyDate(22,12,1964);m1=new MyDate(22,7,1964);异类收集(heterogeneous collections)Person
13、 p=new Person3;p0=new Student();p1=new Person();p2=new Graduate();,23,多态性应用举例(2),方法声明的参数类型为父类类型,可以使用子类的对象作为实参调用该方法public class Test public void method(Person e)/e.getInfo();public static void main(Stirng args)Test t=new Test();Student m=new Student();t.method(m);,24,instanceof 操作符,public class Perso
14、n extends Object public class Student extends Person public class Graduate extends Person-public void method1(Person e)if(e instanceof Student)/处理Student类型及其子类类型对象 else if(e instanceof Graduate)/处理Graduate类型及其子类类型对象 else/处理Person类型对象,25,对象造型(Casting),对Java对象的强制类型转换称为造型在造型前可以使用instanceof操作符测试一个对象的类型从
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 程序员 培训 定制 课程 c06

链接地址:https://www.31ppt.com/p-5373881.html