java课件06Java的继承与多态.ppt

上传人:小** 文档编号:88563105 上传时间:2019-05-02 格式:PPT 页数:60 大小:323KB
返回 下载 相关 举报
java课件06Java的继承与多态.ppt_第1页
第1页 / 共60页
java课件06Java的继承与多态.ppt_第2页
第2页 / 共60页
java课件06Java的继承与多态.ppt_第3页
第3页 / 共60页
java课件06Java的继承与多态.ppt_第4页
第4页 / 共60页
java课件06Java的继承与多态.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《java课件06Java的继承与多态.ppt》由会员分享,可在线阅读,更多相关《java课件06Java的继承与多态.ppt(60页珍藏版)》请在金锄头文库上搜索。

1、第6章 Java的继承与多态,Java教材编写组,教学目标,通过父类创建子类 理解子类和父类构造方法的执行顺序 掌握实现方法覆盖的方法 掌握super、this、final关键字意义及使用方法 理解Object类的作用以及类的常用方法 了解多态的意义 掌握重载的使用方法,概述,继承、封装、多态是面向对象程序设计的3个重要特性。通过继承,以既有类为基础,派生出新类,达到代码重用的目的;通过封装,对类对象的数据成员进行访问控制,起到数据保护的作用;通过多态,程序能够动态的匹配同名方法,使程序更加灵活。,继承的基本概念,继承是一种由已有的类创建新类的机制。利用继承,可以先创建一个公有属性的一般类,根

2、据一般类再创建一个具有特殊属性的新类。新类继承一般类的状态和行为,并根据需要增加它为自己的新的状态和行为。由此继承而得到的类为子类,被继承的类为父类(超类)。Java不支持多继承(子类只能有一个父类)。,class Person / 定义Person类 protected String name; protected String sex; protected int age; Person类的方法 ,class Student extends Person private String department;/系别 private String specialty;/专业 Student类的

3、方法 ,通过Person类派生出Student类。Student类继承自Person类,拥有Person类的所有方法和属性。,通过关键字extends实现继承,class Person / 定义Person类protected String name; /姓名 protected String sex; /性别 protected int age; /年龄 public void register(String n,String s,int a)/设置数据成员 name=n; sex=s; age=a; String getName()/获取姓名 return name; String get

4、Sex()/获取性别 return sex; int getAge()/获取年龄 return age; public void showMe()/显示人员信息 System.out.println(“姓名:“+name+“,性别:“+sex+“,年龄:“+age); ,/ Ex6_1.java Person类的定义,class Student extends Person /定义Student(学生)类,是Person类的子类。 private String department; /系别 private String specialty; /专业 public void studentRe

5、gister(String n,String s,int a,String dep,String spe) /设置数据成员 register(n,s,a); department=dep; specialty=spe; String getDepartment() /获取学生所在系 return department; String getSpecialty() /获取学生所学专业 return specialty; public void showStudent() /显示学生类数据成员 System.out.println(“姓名:“+name+“,性别:“+sex+“,年龄:“+age+

6、“,系别:“+department+“,专业:“+specialty); ,通过extends关键字,由Person类派生出Student类,public class Ex6_1 public static void main(String args) Student student1=new Student(); student1.studentRegister(“张三“,“男“,18,“计算机“,“软件开发“); student1.showStudent(); ,运行结果:姓名:张三,性别:男,年龄:18,系别:计算机,专业:软件开发,程序分析:本例中的Person类是父类,它派生出子类S

7、tudent类。Student类继承了Person类的name属性,sex属性,age属性,GetName()方法,GetSex(),ShowMe()方法等。同时,Student类对Person类进行了功能扩展,又增加了department,specialty属性和GetDepartment()、GetSpecialty()、ShowStudent()等方法。,说明,继承能够使子类拥有(继承)父类的非私有属性和方法(即可以继承public、protected和默认访问属性的成员),而不需要在子类定义时重新定义父类中的这些同名属性和方法。当修改父类中的某个属性和方法时,子类中也会同样得到修改。这

8、样,就可以省去重复定义成员的烦琐,实现代码重用,同时提高了代码的可维护性。 一个父类可以有多个子类,这些子类都是父类的特例,父类描述了这些子类的公共属性和方法。一个子类可以继承它的父类(或祖先类)中的属性和方法,这些属性和方法在子类中不必定义,子类中还可以定义自己的属性和方法。,创建子类的语法格式,访问权限 class SonClass(子类名) extends ParentClass (父类名) 类体定义; ,“访问权限”是指public,private,protected等;SonClass是子类名;ParentClass是父类名;这两个类名通过关键字extends联系在一起,形成继承关系

9、,构造方法的继承,通常在定义一个新类的时候,会定义一个相应的构造方法,用来对数据成员进行一些初始化。构造方法是在创建对象时自动调用,并执行构造方法的内容,构造方法不需从程序直接调用,而是在对象产生时自动执行。构造方法没有返回值,名称必须与类的名称相同之外。 假如在一个类中定义了构造方法,而由这个类派生出来的子类也定义了构造方法,那生成新的子类对象的时候,构造方法是怎样执行的呢?,/ Ex6_2.java class Person / 定义Person类 protected String name; /姓名 protected String sex; /性别 protected int age;

10、 /年龄 public Person() System.out.println(“Person() constructor is called!“); public void register(String n,String s,int a)/设置数据成员 name=n; sex=s; age=a; public void showMe()/显示人员信息 System.out.println(“姓名:“+name+“,性别:“+sex+“,年龄:“+age); ,Person类的构造方法,用于输出”Person() constructor is called!”,class Student e

11、xtends Person /定义Student(学生)类,是Person类的子类 private String department;/系别 private String specialty;/专业 public Student()/定义学生类的构造方法 System.out.println(“Student() constructor is called!“); public void studentRegister(String n,String s,int a,String dep,String spe) register(n,s,a); department=dep; special

12、ty=spe; public void showStudent()/显示学生类数据成员 System.out.println(“姓名:“+name+“,性别:“+sex+“,年龄:“+age+“,系别:“+department+“,专业:“+specialty); ,子类Student类的构造方法,用于输出“Student() constructor is called!”,public class Ex6_2 public static void main(String args) Student student1=new Student(); student1.studentRegiste

13、r(“张三“,“男“,18,“计算机“,“软件开发“); student1.showStudent(); ,运行结果: Person() constructor is called! Student() constructor is called! 姓名:张三,性别:男,年龄:18,系别:计算机,专业:软件开发,Person类定义了一个无参构造方法,构造方法运行时将输出“Person() constructor is called!”。通过Person类派生出了Student类,Student类中也定义了一个无参构造方法,构造方法运行时将输出“Student() constructor is

14、called! ”。通过输出结果,明显看出,创建Student对象时,在执行Student类的构造方法之前,调用了Person类的构造方法。这样的执行顺序可以保证子类对象从父类对象继承得到的成员能够进行正确的初始化。,覆盖,覆盖是指在子类中,利用完全相同的方法名,返回类型和参数,重新实现父类的某一成员方法。 当需要对象响应同样的方法,但与超类中原来的方法有不同行为时,需要超越(抑制)该方法。用新的方法体取代原来的方法,但使用相同的方法名,在Ex6_1.java中,Person类通过showMe()方法显示人员信息,而子类Student类通过showStudent()方法显示人员信息。这两个方法

15、都是用来显示人员信息,只是显示的项目不同而已。实际上,在定义Student类方法的时候,可以定义showMe()方法将父类的showMe()方法覆盖。,/ Ex6_3.java class Person / 定义Person类 protected String name; /姓名 protected String sex; /性别 protected int age; /年龄 public Person() public Person(String n,String s,int a) /构造方法 name=n; sex=s; age=a; public void showMe() /显示人员信

16、息 System.out.println(“姓名:“+name+“,性别:“+sex+“,年龄:“+age); ,父类Person中定义了showMe()方法,用来输入类对象基本信息,class Student extends Person /定义Student(学生)类,是Person类的子类 private String department;/系别 private String specialty;/专业 public Student(String n,String s,int a,String dep,String spe) name=n; sex=s; age=a; department=dep; special

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号