您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > JAVA程序设计模块四---类的继承和多态
旅游信息学院JAVA语言程序设计软件技术教研室1JAVA语言程序设计JAVA程序设计模块四---类的继承和多态一、教学章节模块四类的继承和多态二、教学知识点1:继承的特点2:运用Java语言实现继承3:重载与重写的区别4:运用Java程序实现多态5:Java的继承机制6:final关键字和abstract关键字三、教学目的和要求任务一:理解继承及其特点任务二:运用Java语言实现继承任务三:理解重载与重写的区别任务四:运用Java程序实现多态任务五:掌握Java的继承机制任务六:掌握final关键字和abstract关键字四、主要仪器设备1、笔记本电脑及相应的WindowsOperatingSystems.2、已安装的JDK7.0和jcreator或MyEclipse软件。五、教学内容任务一:理解继承及其特点一、继承的引入案例演示:classPerson{privateStringname;privateintage;publicvoidsetName(Stringname){this.name=name;}publicvoidsetAge(intage){旅游信息学院JAVA语言程序设计软件技术教研室2this.age=age;}publicStringgetName(){returnthis.name;}publicintgetAge(){returnthis.age;}}classStudent{privateStringname;privateintage;privateStringschool;publicvoidsetName(Stringname){this.name=name;}publicvoidsetAge(intage){this.age=age;}publicvoidsetSchool(Stringschool){this.school=school;}publicStringgetName(){returnthis.name;}publicintgetAge(){returnthis.age;}publicStringgetSchool(){returnthis.school;旅游信息学院JAVA语言程序设计软件技术教研室3}}说明:从这样的两个类中可以发现,代码的重复过多,直接从Student类中就可以发现重复的代码。因为按照以前学习的概念,如果要定义这样的类,则只能采用此种方式。从实际中可以发现学生是一个人,学生比人多了一个属性,两个方法,也就是所学生要比人的定义更多,那么这个时候就可以使用继承的概念。二、继承的概念面向对象程序设计中,在已有类的基础上定义新类,而不需要把已有类的内容重新书写一遍,这就叫做继承。已有类称为基类或父类,在此基础上建立的新类称为派生类或子类。继承关系可以描述为:子类继承了父类或父类被子类继承。子类与父类建立继承关系后,子类也就拥有了父类的非私有的成员属性和成员方法,同时还可以拥有自己的属性和方法。三、继承的特点继承实现方式注解:1.Java只允许单继承,而不允许多重继承,也就是说一个子类只能有一个父类;2.如果子类继承了父类,则子类自动具有父类的全部的属性和成员方法(功能),但对于继承过来的私有属性,在子类中只能通过调用父类的共有方法来设置或访问;3.子类可以定义自己的数据成员和成员函数,同时也可以修改父类的数据成员或重写父类的方法;4.Java中却允许多层继承。例如,子类A可以有父类B,父类B同样也可以再拥有父类C。因此子类都是“相对”的;5.在Java中,Object类为特殊超类或基类,所有的类都直接或间接地继承Object。任务二:运用Java语言实现继承一、继承的实现继承的英文翻译为inherit,但是由继承定义可以看出子类实际上是扩展了父类,因此Java中继承是通过关键字“extends”来实现的。关键字“extends”说明要构建一个新类而新类是从一个已经存在的类中衍生出来的。格式如下:旅游信息学院JAVA语言程序设计软件技术教研室4[修饰符]class子类名[extends父类]案例演示1:classPerson{Stringname;intage;charsex;publicvoidshow(){System.out.println(姓名:+name+年龄:+age+性别:+sex);}}classStudentextendsPerson{intsno;Stringdepartment;}publicclassTestStudent{publicstaticvoidmain(String[]args){Studentst=newStudent();st.name=张三;st.age=18;st.sex='男';st.sno=201001;st.department=软件专业;st.show();}}案例演示2():classPerson{privateStringname;旅游信息学院JAVA语言程序设计软件技术教研室5privateintage;publicvoidsetName(Stringname){this.name=name;}publicvoidsetAge(intage){this.age=age;}publicStringgetName(){returnthis.name;}publicintgetAge(){returnthis.age;}};classStudentextendsPerson{}publicclassExtDemo02{publicstaticvoidmain(Stringargs[]){Studentstu=newStudent();//学生stu.setName(张三);//从Person继承而来stu.setAge(30);//从Person继承而来System.out.println(姓名:+stu.getName());System.out.println(年龄:+stu.getAge());}}案例演示(子类可以添加自己的属性和行为):classPerson{privateStringname;privateintage;旅游信息学院JAVA语言程序设计软件技术教研室6publicvoidsetName(Stringname){this.name=name;}publicvoidsetAge(intage){this.age=age;}publicStringgetName(){returnthis.name;}publicintgetAge(){returnthis.age;}};classStudentextendsPerson{privateStringschool;//扩充的属性publicvoidsetSchool(Stringschool){this.school=school;}publicStringgetSchool(){returnthis.school;}}publicclassTestStudent{publicstaticvoidmain(Stringargs[]){Studentstu=newStudent();//学生stu.setName(张三);//从Person继承而来stu.setAge(30);//从Person继承而来stu.setSchool(清华大学);//自己定义的方法System.out.println(姓名:+stu.getName());System.out.println(年龄:+stu.getAge());旅游信息学院JAVA语言程序设计软件技术教研室7System.out.println(学校:+stu.getSchool());}}二、构造方法的继承1、基于父类创建子类时,如果基于子类创建了一个对象,则程序运行时,系统会首先调用父类的无参构造方法,然后才会执行子类的构造方法。如果希望调用父类的有参构造方法,可使用super关键字。案例演示:classPersonA{Stringname;//声明两个成员变量intage;//无构造方法publicPersonA(){this.name=personname;this.age=23;}//有参构造方法publicPersonA(Stringname,intage){this.name=name;this.age=age;}//成员方法publicvoidpprint(){System.out.println(class:Person:+Name:+this.name+age:+this.age);}}classStudentAextendsPersonA{Stringname;//在派生类中声明自己的成员变量intclassno;//声明新的成员变量旅游信息学院JAVA语言程序设计软件技术教研室8//无参构造方法publicStudentA(){super(xyz,30);//调用父类的有参构造方法this.name=studentname;this.age=20;}//有参构造方法publicStudentA(Stringname,intage,intclassno){super(name,age);//调用父类的有参构造方法this.name=name;this.age=age;this.classno=classno;}//子类的成员方法publicvoidsprint(){System.out.println(class:student:+Name:+this.name+age:+this.age+classno:+this.classno);System.out.println(父类中的name成员变量+super.name);}}publicclassTestStudent{publicstaticvoidmain(Stringargs[]){StudentAobj1=newStudentA();//调用无参构造方法创建对象StudentAobj2=newStudentA(张三,18,1);//调用有参构造方法创建对象obj1.pprint();//调用父类的成员方法obj1.sprint();//调用子类的成员方法obj2.pprint();//调用父类的成员方法obj2.sprint();//调用子类的成员方法}}旅游信息学院JAVA语言程序设计软件技术教研室9总体而言,构造方法的继承遵循以下原则:(1)子类无条件地继承父类的无参构造方法。(2)如果子类没有定义构造方法,则它将继承父类无参构造方法作为自己的无参构造方法,如果子类定义了构造方法,则在创建子类对象时,将先执行来自父类的无参构造方法,然后再执行自己的构造方法。(3)对于父类带参数的构造方法,子类可以通过在自己的构造方法中使用super关键字来调用它,但这个调用语句必须是子类构造方法中的第一条可执行语句。2、super关键字如果子类中定义的成员变量和父类中的成员变量同名时,子类就隐藏了从父类继承的成员变量。当子类中定义了一个方法,并且这个方法的名字、返回类型和参数列表和父类的某个方法完全相同,子类从父类继承的这个方法将被隐藏。如果在子类中向使用被子类隐藏的成员变量或方法就可以使用关键字super。在Java语言中,super代表当前对象的直接父类对象,其使用格式如下:访问父类的无参构造方法:super();访问父类的有参构造方法:super(参数列表);访问父类的成员变量:super。成员变量名称;案例演示(使用关键字super调用父类的构造方法):子类不继承父类的构造方法,因此,子类如果想使用父类的构造方法,必须在子类的构造方法中使用,并且必须使用关键字super来表示,而且super必须是子类构造方法中的头一条语句。classStudent{intnumber;Stringname;publicStudent(){}publicStudent(intnumber,Stringname){;旅游信息学院J
本文标题:JAVA程序设计模块四---类的继承和多态
链接地址:https://www.777doc.com/doc-2881296 .html