欢迎来到天天文库
浏览记录
ID:21216848
大小:365.00 KB
页数:27页
时间:2018-10-20
《java课件-继承和多态》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、类的继承被继承的类称为父类或者超类或者基类继承父类的类称为子类或者派生类执行继承时,子类将获得父类的所有成员(包括private的成员),并具有自身特有的属性。继承是面向对象编程技术的一块基石,它允许创建分等级层次的类。运用继承,可以创建一个通用类定义一系列一般特性。该类可以被更具体的类继承Emoloyee类:namesexWorker类:categorydressAllowanceOfficer类:empClassvehicle职员类,具有姓名和性别两个属性工人类,继承了父类的姓名和性别属性外还包
2、含类别和是否有服装津贴属性主任类,还包含级别和是否配备交通工具属性extends关键字extends关键字用于继承类。声明一个继承父类的类的通常形式如下:classsubclass-nameextendssuperclass-name{//类体}没有extends,默认父类为Object一个类只能有一个父类,即单继承子类继承父类的全部成员注意继承示例classEmployee{Stringname;//姓名charsex;//性别Employee(Stringn,chars){name=n;sex=
3、s;}publicStringgetName(){returnname;}publicchargetSex(){returnsex;}}classWorkerextendsEmployee{charcategory;//类别booleandressAllowance;//是否提供服装津贴Worker(Stringn,chars,charc,booleand){super(n,s);category=c;dressAllowance=d;}publicchargetCategory(){returnc
4、ategory;}publicbooleangetAll(){returndressAllowance;}}classInheDemo{publicstaticvoidmain(Stringargs[]){Workerw=newWorker("M.John",'M','B',true);System.out.println("工人信息");System.out.println("姓名:"+w.getName());System.out.println("性别:"+w.getSex());System
5、.out.println("类别:"+w.getCategory());if(w.getAll())System.out.println("提供服装津贴");elseSystem.out.println(“未提供服装津贴”);}}继承分析在子类中不能直接访问父类中的私有成员子类和父类之间应该有“IS-A”关系不要滥用继承,只有在分类学上有意义时,才应该使用继承子类具有扩展超类的责任继承的目的就是为了代码复用里式代换原则定义:无论何时,只要程序需要一个超类对象,那么就可以用一个子类对象来替代它。Emp
6、loyeee;e=newEmployee();//需要超类Employee对象e=newManager();//用子类对象替换掉超类对象注意:反过来是不行的多态和动态绑定声明类型:对象变量被声明时的类型实际类型:对象变量实际指向的对象类型一个对象变量可以指向多种实际类型的现象称为“多态”在运行时自动选择正确的方法进行调用的现象称为“动态绑定”Java根据对象的实际类型来进行方法调用方法重载(overloading)方法重载是Java实现面向对象的多态性机制的一种方式。同一个类中多个方法有相同的名字,
7、不同的参数列表,这种情况称为方法重载。当重载方法被调用时,Java编译器根据参数的类型和数量来确定实际调用哪个重载方法的版本。方法重载不考虑方法的返回类型。重载构造函数一个类可以有多个构造函数如果一个类没有定义一个构造函数,Java编译器将为这个类自动提供缺省构造函数(即无参的构造函数)缺省构造函数将成员变量的值初始化为缺省值一旦创建了自己的构造函数,Java编译器将不再自动提供无参的构造函数。重载构造函数提供了一组创建对象的方式,可以根据需要决定是否带初始参数。publicclassconstru
8、ctOverload{intx;constructOverload(){x=0;System.out.println("不带参数的构造函数");}constructOverload(intx){this.x=x;System.out.println("带一个参数的构造函数");}}方法覆盖(override)方法覆盖是Java实现多态性机制的另一种方式。在类层次结构中,如果子类中的一个方法与父类中的方法有相同的返回类型、相同的方法名并具有相同数量和类型的参数列表,这种
此文档下载收益归作者所有