继承、接口和内部类

上传人:第*** 文档编号:49665125 上传时间:2018-08-01 格式:PPT 页数:26 大小:284.50KB
返回 下载 相关 举报
继承、接口和内部类_第1页
第1页 / 共26页
继承、接口和内部类_第2页
第2页 / 共26页
继承、接口和内部类_第3页
第3页 / 共26页
继承、接口和内部类_第4页
第4页 / 共26页
继承、接口和内部类_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《继承、接口和内部类》由会员分享,可在线阅读,更多相关《继承、接口和内部类(26页珍藏版)》请在金锄头文库上搜索。

1、 继承继承 多态和动态绑定多态和动态绑定 抽象类抽象类 接口接口 内部类内部类第四章 继承、接口和内部类 继承class Employeeclass Employee private String name; private String name;private double salary; private double salary;private Date private Date hireDayhireDay; ;public public Employee(StringEmployee(String n, double s, n, double s, intint year, yea

2、r, intint month, month, intint day) day) name=n; name=n;salary=s; salary=s;GregorianCalendarGregorianCalendar calendar=new GregorianCalendar(year,month-1,day); calendar=new GregorianCalendar(year,month-1,day);hireDayhireDay= =calendar.getTimecalendar.getTime( );( ); public String public String getNa

3、megetName( )( ) return name; return name; public double public double getSalarygetSalary( )( ) return salary; return salary; public Date public Date getHireDaygetHireDay( )( ) return return hireDayhireDay; ;public void public void raiseSalary(doubleraiseSalary(double byPercentbyPercent) ) double rai

4、se=salary*byPercent/100; double raise=salary*byPercent/100;salary+=raise; salary+=raise; ManagerManager:相同之处:姓名,薪水,雇用日期相同之处:姓名,薪水,雇用日期 不同之处:薪水还包括奖金不同之处:薪水还包括奖金 A manager is a employeeA manager is a employee。 继承继承的特点继承的特点 格式:格式:extends extends 父类名父类名 ; ; 若无若无extends,extends,则则默认父类默认父类ObjectObjectclas

5、s Manager extends Employeeclass Manager extends Employee EmployeeEmployee:超类:超类( (superclasssuperclass) ),基类,基类(base class)(base class),父类,父类(parent class)(parent class) ManagerManager:子类:子类(subclass)(subclass),派生类,派生类(derived class)(derived class),孩子类,孩子类(child class)(child class) 子类将继承父类成员子类将继承父类成

6、员 , ,但不能直接访问父类但不能直接访问父类privateprivate成员成员ManagerManager继承了继承了成员变量:成员变量:name,salary,hireDayname,salary,hireDay方法:方法:getName,getSalary,getHireDay,raiseSalarygetName,getSalary,getHireDay,raiseSalary, ,Manager m=new Manager();Manager m=new Manager(); m.getNamem.getName( );( ); 继承继承的特点继承的特点 子类可对父类可做扩展子类可

7、对父类可做扩展 和特殊化和特殊化(1)(1)添加新的成员:成员变量和方法添加新的成员:成员变量和方法class Manager extends Employeeclass Manager extends Employee private double bonus;/ private double bonus;/添加新的成员变量添加新的成员变量public void public void setBonus(doublesetBonus(double b) / b) /添加新的方法添加新的方法 bonus=b; bonus=b; public double public double getSa

8、larygetSalary( )/( )/覆盖父类中的方法覆盖父类中的方法 double double baseSalarybaseSalary= =supersuper.getSalary.getSalary( );( );return return baseSalary+bonusbaseSalary+bonus; ; (2)(2)重新定义父类中已有的方法:覆盖重新定义父类中已有的方法:覆盖(override ) (override ) 子类中的方法应与父类中的被覆盖的方法有完全相同的:参数列表、子类中的方法应与父类中的被覆盖的方法有完全相同的:参数列表、返回值;而且访问权限不能更严格;返

9、回值;而且访问权限不能更严格; supersuper调用父类被覆盖的方法调用父类被覆盖的方法 继承继承的特点继承的特点 子类的构造方法子类的构造方法public Manager( String public Manager( String n,doublen,double s,ints,int year,intyear,int month,intmonth,int day)/ day)/构造方法构造方法 super(n,s,year,month,daysuper(n,s,year,month,day); ); bonus=0;bonus=0;(1)(1)在子类的构造方法中使用在子类的构造方法中

10、使用super(super(参数参数) )调用父类的含参构造方法调用父类的含参构造方法, , supersuper必须是第一句必须是第一句 继承继承的特点继承的特点 子类的构造方法子类的构造方法(2)(2)若子类的构造方法中若子类的构造方法中, ,没有使用没有使用supersuper调用父类的构造方法和调用父类的构造方法和thisthis调用重调用重 载的其他构造方法,则在创建子类对象时载的其他构造方法,则在创建子类对象时, ,系统默认先调用父类的无参构造系统默认先调用父类的无参构造 方法方法, ,然后执行子类的构造方法然后执行子类的构造方法; ;(3)this( ) (3)this( )和和

11、super( )super( )不能同时出现不能同时出现例:例:Sandwich.javaSandwich.java(构造方法调用次序)构造方法调用次序)ManagerTest.javaManagerTest.javaMeal MealLunch LunchPortableLunchPortableLunchSandwich : Sandwich : Bread,Cheese,LettuceBread,Cheese,Lettuce 继承继承的特点继承的特点 单继承、多层继承单继承、多层继承 EmployeeEmployeeManagerManagerSecretarySecretaryProg

12、rammerProgrammerExecutiveExecutive 继承final final finalfinal标记的类不能被继承标记的类不能被继承 finalfinal标记的变量是常量,只能赋值一次(标记的变量是常量,只能赋值一次(finalfinal成员变量必须在定义成员变量必须在定义 的时候赋值或在构造方法中赋值,才能使用)的时候赋值或在构造方法中赋值,才能使用) finalfinal标记的方法不能被覆盖标记的方法不能被覆盖final class Executive extends Managerfinal class Executive extends Manager class

13、 Employeeclass Employee public final String public final String getNamegetName( )( ) return name; return name; 例:例:FinalTest.javaFinalTest.java 多态和动态绑定 多态多态 一个引用变量可以引用多种实际类型对象的现象称为多态。一个引用变量可以引用多种实际类型对象的现象称为多态。一个引用变量可以引用这个类和该类的所有子类对象。一个引用变量可以引用这个类和该类的所有子类对象。 父类引用变量引用子类对象父类引用变量引用子类对象(1 1)规则:沿着继承层次,从下往

14、上,)规则:沿着继承层次,从下往上, 子类对象可以当做父类对象使用子类对象可以当做父类对象使用(2 2)转换时机:赋值,方法调用(参数传递)转换时机:赋值,方法调用(参数传递)Employee e;Employee e; e=new Employee();e=new Employee(); e=new Manager();e=new Manager();Employee staff=new Employee3;Employee staff=new Employee3; Manager boss=new Manager();Manager boss=new Manager(); staff0=b

15、oss;/staff0=boss;/赋值时发生自动转换赋值时发生自动转换 staff0.raiseSalary();/staff0.raiseSalary();/正确正确 staff0.setBonus( );/staff0.setBonus( );/错误错误EmployeeEmployeeManagerManagerSecretarySecretaryProgrammerProgrammerExecutiveExecutiveraiseSalaryraiseSalary( ( ) )setBonussetBonus( )( ) 多态和动态绑定 多态多态 父类引用变量赋值给子类引用变量(强制转换)父类

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

当前位置:首页 > 办公文档 > 解决方案

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