Java高级编程2(环保示范课教案)-继承和多态_第1页
Java高级编程2(环保示范课教案)-继承和多态_第2页
Java高级编程2(环保示范课教案)-继承和多态_第3页
Java高级编程2(环保示范课教案)-继承和多态_第4页
Java高级编程2(环保示范课教案)-继承和多态_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java高级编程-第二章示范课教案 授课章节目录:面向对象的java实现第二章继承和多态 授课时数:4课时 目的要求:掌握继承掌握super关键字掌握多态 教材分析(难点、疑点):继承是面向对象的一块基石,因为它允许分等级层次的创建类。利用继承我们可以创建一个通用的类,然后再由更具体的类来继承它,再在这些类里加入自己特定的东西,这样我们会节省很多代码。下图为员工之间的继承关系:Java只支持单继承,一个Java类只能有一个父类,使用extends来实现继承,其语法格式为:public class 子类名 extends 父类名以下列举一个继承案例,让Teacher继承至Employee,那么T

2、eacher是子类、Employee是父类。/* 员工类* author create*/class Employee public String name; /姓名public String sex; /性别public int age; /年龄public String tell; /联系电话/* 自我介绍的方法*/public void introduce(System.out.println("我是"+name+",今年"+age+"岁,联系电话是:"+tell;/* 教师类继承至员工类* author create*/cla

3、ss Teacher extends Employee/Teacher类特有的特征public String subject;/* 教师特有的方法-讲课*/public void prelect(System.out.println(+"老师开始讲解" + this.subject+ "课程!"Super关键字的用法:子类的构造方法中,通过super关键字调用父类的构造方法。可以通过以下代码进行Super关键字的验证。/* 员工类* author create*/class Employee /属性定义/* 父类构造方法*/public

4、 Employee(String name,String sex,int age,String tellSystem.out.println("-Employee(父类)构造方法-" = name;this.sex = sex;this.age = age;this.tell = tell;/方法定义/* 教师类继承至员工类* author create*/class Teacher extends Employee /属性定义/* 子类构造方法*/public Teacher(String name,String sex,int age,String t

5、ell,String subjectsuper(name, sex, age, tell;this.subject = subject;System.out.println("-Teacher(子类)构造方法-"/方法定义public class EmployeeManagerpublic static void main(String args Teacher t = new Teacher("张三","男",25,"210-68729823","C语言"t.prelect(;运行效果如下:在

6、使用super关键字的时候学要注意: 在子类的构造方法中父类的构造方法是最先调用的,也就是说super要放在子类构造方法的第一行。在子类的普通方法中还可以使用super调用父类定义的方法或者属性。多态是指只同一事物有不同的表现形式,比如教师和班主任都是属于员工,都有自我介绍的方法,但是班主任和教师的自我介绍可能是不一样的。又如教师拥有讲课的方法,但是根据给定工具的不同教师讲课的方式也不相同。这些都是属于多态的特性。在Java中多态的表现形式有两种:一种称为方法重写,一种称为方法重载。方法重写是指在继承关系中,子类重写父类的方法。所谓重写是指方法的定义完全相同,包括方法名、返回类型、参数列表都完

7、全一样。方法重写的案例:/* 员工类* author create*/class Employee public String name; / 姓名public String sex; / 性别public int age; / 年龄public Employee(String name, String sex, int age = name;this.sex = sex;this.age = age;/* 自我介绍的方法*/public void introduce( System.out.println("我是" + name + ",今年

8、" + age + "岁!"/* 教师类继承至员工类* author create*/class Teacher extends Employee public String subject;public Teacher(String name, String sex, int age, String subsuper(name, sex, age;this.subject = sub;/* 重写父类的自我介绍方法*/public void introduce( System.out.println("我是一名教师,我叫:" + name +

9、",我的技术方向是:" + this.subject+ ",今年" + age + "岁!" ;方法重载是指在同一个类中拥有两个或者两个一样的方法,方法名相同、参数列表不同。比如教师的讲课方法,根据给定的工具可以由不同的讲课方式。class Teacher public String name;public String subject;public Teacher(String name, String subject = name;this.subject = subject;/* 没有工具的讲课方法*/pub

10、lic void prelect( System.out.println("教师" + + "走上讲台开始咆哮!"/* 具有工具的讲课方法* param tool 工具*/public void prelect(String tool System.out.println("教师" + + "开始使用 " + tool + " 讲解" + this.subject + "课!" 教学方法与手段特色:1、讲课内容能够重点突出,讲透难点,循

11、序渐进,主次分明。2、通过案例分析讲述本章节各个知识点。3、通过提问引导的方式讲解程序的分析和解决思路。4、通过现场案例纠错的方法加深学生对知识点的理解。5、通过现场调试项目的方式加深学生对代码的运行过程。 布置作业:一、选择题1、 ( C )术语常常用来指代父类。AParent BChildCSupperClass D无固定术语2、 关键字( B )用来调用父类构造方法。AParent BsuperCextends Dthis3、 在Java中,当在类中定义两个或多个方法,它们有相同的名称而参数项不同时,这种成为( A )。A方法重写 B方法重载C多态 D继承4、 下列选项中,不是java语

12、言关键字的是( C )。Aimport BextendsCmalloc Dnew5、 对继承的说法错误的是( c )。A继承有助于代码重用。B在java中,使用关键字extends来继承。C对于猫和花猫来说:花猫是父类,猫是子类。D父类也可称为基类或超类。6、 下面代码的输出结果是( B )。class Apublic void output( System.out.println(“Hello world!”; class B extends Apublic void fun( System.out.println(“sssssss”;class Testpublic static void

13、 main(String s B b=new B( ;b.output( ; AsssssssBHello world!C运行出错,因为B类中没有output()方法DHello world! sssssss二、简答题1、 设计一个能细分为矩形、三角形、圆形和椭圆形的“图形”类。使用继承将这些图形分类,找出能作为基类部分的共同特征(如校准点和方法(如画法、初始化,并看看这些图形是否能进一步划分为子类。package _23唐尹勇;public class Graphical private String name;/名字public String CaliPoint;/校准点public Gr

14、aphical(String name,String CaliP=name;this.CaliPoint=CaliPoint;public String getName( return name;public void setName(String name = name;public String getCaliPoint( return CaliPoint;public void setCaliPoint(String caliPoint CaliPoint = caliPoint;public void Draw(System.out.pri

15、ntln("使用作图工具绘画。"class Rectangular extends Graphicalprivate int width;/宽private int height;/高public int getWidth( return width;public void setWidth(int width this.width = width;public int getHeight( return height;public void setHeight(int height this.height = height;public Rectangular(Strin

16、g name, String CaliPoint, int width, int height super(name, CaliPoint;this.width=width;this.height=height;public void Drawing(super.Draw(;System.out.println("先画长"+width+"米,再画宽"+height+"米,校准点在:"+CaliPoint;class Triangle extends Graphicalprivate int what;private int heigh

17、t;public Triangle(String name, String CaliPoint,int what,int height super(name, CaliPoint;this.what=what;this.height=height;public int getWhat( return what;public void setWhat(int what this.what = what;public int getHeight( return height;public void setHeight(int height this.height = height;public v

18、oid Drawing(super.Draw(;System.err.println("先画底"+what+"米,在画高"+height+"米,再画两边。校准点在:"+CaliPoint;class Round extends Graphicalprivate int r;public Round(String name, String CaliPoint,int r super(name, CaliPoint;this.r=r;public int getR( return r;public void setR(int r this

19、.r = r;public void Drawing(super.Draw(;System.out.println("用圆规以一点为圆心,半径为:"+r+".校准点在:"+CaliPoint;class Ellipse extends Graphicalprivate int longAxis;private int ShortAxis;public Ellipse(String name, String CaliPoint,int longAxis,int ShortAxis super(name, CaliPoint;this.longAxis=lo

20、ngAxis;this.ShortAxis=ShortAxis;public int getLongAxis( return longAxis;public void setLongAxis(int longAxis this.longAxis = longAxis;public int getShortAxis( return ShortAxis;public void setShortAxis(int shortAxis ShortAxis = shortAxis;public void Drawing(super.Draw(;System.out.println("椭圆的长轴为

21、:"+longAxis+",短轴为:"+ShortAxis+"。校准点在:"+CaliPoint;package _33杨畅;public class GraphicalTest public static void main(String args Rectangular rectangular=new Rectangular("矩形", "中心", 10, 20;rectangular.Drawing(;Triangle triangle=new Triangle("三角形", &

22、quot;中心", 12, 10;triangle.Drawing(;Round round=new Round("圆", "圆心", 14;round.Drawing(;Ellipse ellipse=new Ellipse("椭圆", "焦点", 22, 23;ellipse.Drawing(;2、 创建一个名为Employee的类。它存储姓和名。此信息对于所有员工(包括派生类)是公共的。现在,从类employee派生类hourlyworker(小时工、pieceworker(计件工、boss(老板、

23、commissionworker(佣金工。小时工按小时支付工资,对于每周超过40小时的加班时间,按照附加50%支付。按生产的每件产品给计件工支付固定工资。假定该工人仅制造一种产品。老板每周得到固定的工资。佣金工每周得到少许的固定保底工资,加上该工人在一周内总销售的固定百分比。每个类应该有一个构造方法、析构函数和一个名为print(的用于显示数据的函数。package _23唐尹勇;import ;public class Employee private String name;private double Wage;public Employee(String =n

24、ame;public String getName( return name;public void setName(String name = name;public double getWage( return Wage;public void setWage(double wage Wage = wage;public void print(System.out.println(name+"本月工资结账:"class hourlyworker extends Employeeprivate int eryTime;private int time;

25、public hourlyworker(String name,int eryTime, int time super(name;this.time=time;this.eryTime=eryTime;public int getEryTime( return eryTime;public void setEryTime(int eryTime this.eryTime = eryTime;public int getTime( return time;public void setTime(int time this.time = time;public void printing(supe

26、r.print(;if (time>40 super.setWage(eryTime*time*1.5;else super.setWage(eryTime*time;System.err.println(getName(+"本月总共工作了"+time+"个小时,本月工资为:"+getWage(+"元。"class pieceworker extends Employeeprivate int Number;private int eryNumber;public pieceworker(String name,int Numb

27、er,int eryNumber super(name;this.eryNumber=eryNumber;this.Number=Number;/ TODO Auto-generated constructor stubpublic int getNumber( return Number;public void setNumber(int number Number = number;public int getEryNumber( return eryNumber;public void setEryNumber(int eryNumber this.eryNumber = eryNumb

28、er;public void printing(super.print(;super.setWage(Number*eryNumber;System.err.println("本月共生产了"+Number+"件产品,总工资为:"+super.getWage(;class boss extends Employeepublic boss(String name,Double wage super(name;super.setWage(wage;public void printing(super.print(;System.out.println(&quo

29、t;本月工资为:"+super.getWage(;class commissionworker extends Employeeprivate int money;/固定工资private int TotalSales;/总销售public int getMoney( return money;public void setMoney(int money this.money = money;public int getTotalSales( return TotalSales;public void setTotalSales(int totalSales TotalSales = totalSales;public commissionworker

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论