OP10第十章Inherit

上传人:飞*** 文档编号:5499927 上传时间:2017-08-07 格式:PPT 页数:36 大小:231.50KB
返回 下载 相关 举报
OP10第十章Inherit_第1页
第1页 / 共36页
OP10第十章Inherit_第2页
第2页 / 共36页
OP10第十章Inherit_第3页
第3页 / 共36页
OP10第十章Inherit_第4页
第4页 / 共36页
OP10第十章Inherit_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《OP10第十章Inherit》由会员分享,可在线阅读,更多相关《OP10第十章Inherit(36页珍藏版)》请在金锄头文库上搜索。

1、第10讲 继承 (inheritance),1、 继承的概念2、 protected成员3、 应用举例4、 覆盖 (override)5、 子类中的构造方法,继承性是面向对象程序设计语言的另一基本特征,通过继承可以实现代码的复用。继承而得到的类为子类,被继承的类为父类,父类包括所有直接或间接被继承的类。Java中不支持多重继承。通过在类的声明中加入extends子句来创建一个类的子类:class SubClass extends SuperClass 如果缺省extends子句,则该类为java.lang.Object的子类。 子类可以继承父类中访问权限设定为public、 protected

2、、 default的成员变量和方法,但是不能继承访问权限为private的成员变量和方法。,1、 继承的概念,何时选择继承?一个很好的经验:“B是一个A吗?”如果是则让B做A的子类.,常犯的错误A有一个B吗? 例如让汽车轮子成为汽车的子类是错误的,继承,子类是作为另一个类的扩充或修正而定义的一个类。,超(基)类 与 子类 super class 与 sub class,Subclassess commonalities are expressed in the members of the superclass. Objects of subclasses that extend a comm

3、on superclass can be treated as objects of that superclass. However, superclass objects cannot be treated as objects of their subclasses.,sub class “is - a” super class,类的继承,class Car int car_number; void set_number(int car_num) car_number=car_num; void show_number() System.out.println (“My car No.

4、is :”+car_number); ,TrashCar extends Car (1),class TrashCar extends Car int capacity; void set_capacity(int trash_car_capacity) capacity=trash_car_capacity; void show_capacity() System.out.println(“My capacity is: ” + capacity); ,TrashCar extends Car (2),Car是父类,TrashCar是子类。TrashCar中继承了Car中的两个方法,同时又增

5、加了两个新方法。,TrashCar extends Car (3),public: 任何其它类、对象只要可以看到这个类的话,那么它就可以存取变量的数据,或使用方法。 protected:同一类,同一包可以使用。不同包的类要使用,必须是该类的子类。 private:不允许任何其他类存取和调用。 friendly(default,前边没有修饰字的情况):在同一程序包中出现的类才可以直接使用它的数据和方法.,2、 protected成员,当一个类可以被访问时,对类内的成员变量和成员方法而言,其应用范围可以通过施以一定的访问权限来限定。 同一个类中 同一个包中 不同包中的子类 不同包中的非子类(任意类

6、)privatedefaultprotectedpublic ,3、 应用举例,In a companys payroll application, commission employees (superclass)are paid a percentage of their sales, while base-salaried commission employees(subclass) receive a base salary plus a percentage of their sales.,Ex. 1 CommissionEmployee directly inherits from

7、 class Object & has 5 private instance variables,public class CommissionEmployee extends Object private String firstName; private String lastName; private String socialSecurityNumber; private double grossSales; / gross weekly sales private double commissionRate; / commission percentage / five-argume

8、nt constructor public CommissionEmployee( String first, String last, String ssn, double sales, double rate ) / implicit call to Object constructor occurs here firstName = first; lastName = last; socialSecurityNumber = ssn; setGrossSales( sales ); / validate and store gross sales setCommissionRate( r

9、ate ); / validate and store commission rate ,public void setFirstName( String first ) firstName = first; public String getFirstName() return firstName; public void setLastName( String last ) lastName = last; public String getLastName() return lastName; public void setSocialSecurityNumber( String ssn

10、 ) socialSecurityNumber = ssn; / should validate public String getSocialSecurityNumber() return socialSecurityNumber; public void setGrossSales( double sales ) grossSales = ( sales 0.0 & rate 1.0 ) ? rate : 0.0; public double getCommissionRate() return commissionRate; public double earnings() return

11、 commissionRate * grossSales; public String toString() return String.format( %s: %s %sn%s: %sn%s: %.2fn%s: %.2f, commission employee, firstName, lastName, social security number, socialSecurityNumber, gross sales, grossSales, commission rate, commissionRate ); / end class CommissionEmployee,Ex. 1,Ex

12、. 2 BasePlusCommissionEmployee directly inherits from class Object & has 6 private instance variables,public class BasePlusCommissionEmployee private String firstName; private String lastName; private String socialSecurityNumber; private double grossSales; / gross weekly sales private double commiss

13、ionRate; / commission percentage private double baseSalary; / base salary per week / six-argument constructor public BasePlusCommissionEmployee( String first, String last, String ssn, double sales, double rate, double salary ) / implicit call to Object constructor occurs here firstName = first; last

14、Name = last; socialSecurityNumber = ssn; setGrossSales( sales ); / validate and store gross sales setCommissionRate( rate ); / validate and store commission rate setBaseSalary( salary ); / validate and store base salary ,Differences between Ex2 and Ex1,public void setFirstName( String first ) firstN

15、ame = first; public String getFirstName() return firstName; public void setLastName( String last ) lastName = last; public String getLastName() return lastName; public void setSocialSecurityNumber( String ssn ) socialSecurityNumber = ssn; / should validate public String getSocialSecurityNumber() return socialSecurityNumber; public void setGrossSales( double sales ) grossSales = ( sales 0.0 ) ? 0.0 : sales; public double getGrossSales() return grossSales; ,

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

当前位置:首页 > 中学教育 > 其它中学文档

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