《java类计算平面图形面积.ppt》由会员分享,可在线阅读,更多相关《java类计算平面图形面积.ppt(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、类的继承主要内容学习目标及重、难点1学习任务2课堂实践3总结与要求4任务介绍任务一 计算平面图形的面积与周长任务二 完成动物之间的继承管理学习目标及内容学习目标学习内容实现类的继承父类与子类继承的规则super的用法变量隐藏方法重写构造方法的继承u理解类的继承关系u掌握Java类的继承实现u理解继承规则u掌握super的使用u掌握方法重写u熟悉构造方法的继承重点重点继承的关系与实现继承的关系与实现 继承规则继承规则方法重写方法重写 难点难点方法重写方法重写构造方法的调用次序构造方法的调用次序知识回顾v类是抽象,描述一类事物的特征和行为类是抽象,描述一类事物的特征和行为v类的定义类的定义成员变量
2、描述对象属性,在类中随意使用构造方法-与类同名、没有返回类型、无需显式调用,创建对象时自动调用、可以重载成员方法完成相应功能、可以重载访问权限-public、protected、缺省、privatev对象的创建与使用对象的创建与使用类的实例,是具体化的东西一、引入什么是继承v汽车汽车:型号、排量、颜色型号、排量、颜色v卡车卡车:型号、排量、颜色、载重型号、排量、颜色、载重v/汽车类汽车类classVehicleStringmodel;/汽车型号floatdisplacement;/汽车排量Stringcolor;/汽车颜色v/卡车类卡车类classTruckStringmodel;/卡车型号f
3、loatdisplacement;/卡车排量Stringcolor;/卡车颜色floatcarry;/卡车载重使用继承代码重用v使用使用继承继承描述汽车类和卡车类描述汽车类和卡车类v/汽车类汽车类classVehicleStringmodel;floatdisplacement;Stringcolor;v/描述卡车类,继承汽车类描述卡车类,继承汽车类classTruckextendsVehiclefloatload;/卡车载重,其他三个特性继承汽车类的,可以不要重复定义v继承是继承是利用已存在的类定义新的类利用已存在的类定义新的类,可以实现代码的重复使用,提高,可以实现代码的重复使用,提高效率
4、效率v继承是类之间的一种继承是类之间的一种一般和特殊一般和特殊的关系。的关系。思考:思考:现实生活中还有哪些现实生活中还有哪些对象之间存在继承关系?对象之间存在继承关系?二、类的继承语法规范vJava中被继承的类叫父类中被继承的类叫父类(超类、基类超类、基类),继承一个继承一个类产生的新类叫子类类产生的新类叫子类(派生类派生类)。v创建类时通过创建类时通过extends指明是已有类的子类指明是已有类的子类 类修饰符类修饰符 class 子类名子类名 extends 父类名父类名 /类体,定义子类自己的成员变量和成员类体,定义子类自己的成员变量和成员方法或方法或重写父类的方法重写父类的方法 可以
5、来自系统类可以来自系统类库,也可以是用库,也可以是用户自定义类户自定义类Java中类的继承体现v子类继承父类的体现:子类继承父类的体现:继承父类的所有成员变量和方法;重写父类的方法;增加自己新的属性和方法。v子类是作为另一个类的子类是作为另一个类的扩充或修正扩充或修正而定义的一而定义的一个类,个类,子类总比父类多一些东西。子类总比父类多一些东西。类的继承规范v说明:说明:(1)Java(1)Java不支持多重继承。不支持多重继承。每个子类只能有一个父类(2)(2)继承关系可以传递继承关系可以传递每个子类也可能成为将来某个类的父类直接父类:子类直接继承的类间接父类:两级或两级以上的关系(3)Ja
6、va(3)Java中若未明确指定父类,则默认继承中若未明确指定父类,则默认继承ObjectObject类类 Java类层次结构ObjectNumberMathComponent自定义类1自定义类2IntegerDoubleButtonLabel自定义类自定义类除了根类,每个类都一个唯一的父类三、继承的实现父类定义public class Shape1/图形类图形类父类父类int sideNumber;/边数边数String type;/类别类别public void setSideNumber(int sideNumber)this.sideNumber=sideNumber;switch(s
7、ideNumber)case 1:type=圆圆;break;case 3:type=三角形三角形;break;case 4:type=矩形矩形;break;default:type=本程序无法计算本程序无法计算!;public String getType()return type;继承的实现子类定义public class Circle1 extends Shape1 double radius;public double getRadius()return radius;public void setRadius(double radius)this.radius=radius;publ
8、ic double getArea()double area=Math.PI*radius*radius;/计算圆的面积计算圆的面积return area;public double getPerimeter()return 2*Math.PI*radius;/计算并返回圆的周长计算并返回圆的周长思考:思考:Circle类中有哪些属类中有哪些属性和方法?性和方法?继承的实现测试类定义public class TestCircle1 public static void main(String args)Circle1 myShape=new Circle1();myShape.setSideN
9、umber(1);/调用超类的方法调用超类的方法myShape.setRadius(5.2);/调用子类的方法调用子类的方法System.out.println(“myShape的类别的类别是是:+myShape.getType();double area=myShape.getArea();System.out.println(myShape的面积是的面积是:+area);System.out.println(myShape的周长是的周长是:+myShape.getPerimeter();课堂实践v定义图形类的子类:三角形类和矩形类,分别计算定义图形类的子类:三角形类和矩形类,分别计算其面积
10、及周长。其面积及周长。v理解动物类之间的继承关系,通过理解动物类之间的继承关系,通过Java类的继承类的继承体现各种动物之间的关系。体现各种动物之间的关系。小结v继承可以简化类的定义,实现代码重用继承可以简化类的定义,实现代码重用vJava是是单继承单继承的,父类只能有一个的,父类只能有一个vJava的继承可以的继承可以传递传递,可以有多层结构,可以有多层结构v每个子类只增加自己每个子类只增加自己独特的独特的属性和方法属性和方法v子类内除了自己定义的属性和方法外,还有继承子类内除了自己定义的属性和方法外,还有继承到的父类的到的父类的非私有的非私有的属性和方法属性和方法vJava通过通过接口接口
11、实现类似多重继承功能实现类似多重继承功能四、继承规则v父类和子类在同一个包父类和子类在同一个包父类中private修饰的成员不能被子类继承。父类中缺省、protected和public修饰的成员都被子类继承v父类和子类在不同一个包父类和子类在不同一个包 子类继承父类时同样要求能够找到超类,因此父类必须有package语句,子类必须有import语句,父类还必须有public修饰符父类中private和缺省修饰的成员不能被子类继承父类中proteded和public修饰的成员都被子类继承父类的成员可以在子类中直接使用,但不能通过子类对象使用访问修饰符的控制范围访问修饰符本类子类同一包中的类不同包
12、中的类publicprivateprotected缺省:可访问:可继承类的继承继承规则图示包2子类2PublicSuperClass子类1publicintb;protectedintc;inta;publicintb;protectedintc;privateintd;inta;publicintb;protectedintc;包1被继承到被继承到nono被继承到被继承到被继承到noimport五、变量隐藏和方法重写v子类对父类可做扩展和特殊化子类对父类可做扩展和特殊化创建新创建新的成员:变量或方法重新定义重新定义父类中已有的变量变量:变量隐藏隐藏重新定义重新定义父类中已有的方法方法:方法重
13、写(覆盖)覆盖)(overwrite或override)变量隐藏v子类子类重新重新定义从父类继承的定义从父类继承的完全相同的变量完全相同的变量称为变量隐藏。称为变量隐藏。v变量隐藏后变量的处理变量隐藏后变量的处理当子类执行继承自父类的操作时,处理的是父类的变量当子类执行自己定义的方法时,操作的是自己的变量,把父类的变量“隐藏”起来class Person String id;String name;String address;public void showName()System.out.println(name);class Student extends Person String a
14、ddress;/重新定义父类变量重新定义父类变量 public void showInfo()showName();/调用父类的方法 System.out.println(“Student:“+address);/使用的是子类的address 方法的重写(覆盖)v重写是子类重写是子类根据需要根据需要重新定义继承自父类的方法,使子类具有自己的重新定义继承自父类的方法,使子类具有自己的行为。行为。v子类中的重写的方法应与父类中的被覆盖的方法有子类中的重写的方法应与父类中的被覆盖的方法有完全相同的完全相同的:方法:方法名称、参数列表、返回值类型名称、参数列表、返回值类型。v重写时,修改方法的修饰权限
15、重写时,修改方法的修饰权限只能从小到大只能从小到大 private defaultprotected Lunch()PortableLunch()Bread()Cheese()Lettuce()Sandwich()课后作业:构造方法的继承规则class SuperClassprivate int n;SuperClass()System.out.println(SuperClass();SuperClass(int n)System.out.println(SuperClass(+n+);this.n=n;class SubClass extends SuperClassprivate int
16、 n;SubClass()super(100);System.out.println(SubClass();SubClass(int n)System.out.println(SubClass(+n+);this.n=n;public static void main(String args)SubClass sc1=new SubClass();SubClass sc2=new SubClass(200);总结v继承可以实现代码复用继承可以实现代码复用v继承规则继承规则同一个包内不同包内v变量隐藏变量隐藏v方法重写方法重写(重载的区别)(重载的区别)vthis和和super关键字关键字v构造方法的继承和调用顺序构造方法的继承和调用顺序下课!