欢迎来到天天文库
浏览记录
ID:21837683
大小:430.00 KB
页数:74页
时间:2018-10-20
《第5章 继承、接口与泛型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章继承、接口与泛型本章导读1.子类与父类2.子类的继承性3.子类对象的构造过程4.成员变量隐藏和方法的重写5.super关键字6.final类与final方法7.对象的上转型对象第5章继承、接口与泛型8.继承与多态9.使用abstract类10.面向对象11.接口12.接口回调13.面向接口14.抽象类和接口的比较第5章继承、接口与泛型15.内部类16.匿名类17.异常类18.泛型类5.1子类与父类上一章我们主要学习了类和对象的有关知识,讨论了类的构成以及用类创建对象等主要问题,本章的主要介绍类的继承、和继承有关的多态性以及接口等重要概念。本章还初步介绍了SDK1.5
2、新推出的泛型。子类与父类继承是一种由已有的类创建新类的机制。利用继承,我们可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为。由继承而得到的类称为子类,被继承的类称为父类(超类)。5.1子类与父类父类可以是自己编写的类也可以是java类库中的类。利用继承有利于实现代码的重复使用,子类只需要添加新的功能代码即可。Java不支持多重继承,即子类只能有一个父类。使用关键字extends来声明一个类是另外一个类的子类,格式如下:class父类//定义父类{}class子类extends父类//用ex
3、tends关键字实现类的继承{}返回5.2子类的继承性1.继承的定义所谓类继承就是子类继承父类的成员变量和方法作为自己的成员变量和方法,就好象它们是在子类中直接声明一样。当然,子类能否继承父类的变量和方法还有一定的限制。下面对其进行详细介绍。2.子类和父类在同一包中的继承性如果子类和父类在同一个包中,那么子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中不是private的方法作为自己的方法。继承的成员变量以及方法的访问权限保持不变。classPerson{Stringname;intage;}classStudentexten
4、dsPerson{Stringschool;}publicclassjicheng{publicstaticvoidmain(String[]args){Students=newStudent();//访问Person类中的name属性s.name="张三";//访问Person类中的age属性s.age=25;//访问Student类中的school属性s.school="北京";System.out.println("姓名:"+s.name+",年龄:"+s.age+",学校:"+s.school);}}5.2子类的继承性下面我们看一个例子。程序的运行结果见下图5.2子
5、类的继承性3.子类和父类不在同一包中的继承性如果子类和父类不在同一个包中,那么子类只能继承父类的protected、public成员变量和方法,继承的成员或方法的访问权限不变。如果子类和父类不在同一个包里,子类不能继承父类的友好变量和友好方法。返回注意:在java中只允许单继承,而不允许多重继承,也就是说一个子类只能有一个父类,但是java中却允许多层继承。多重继承:classA{}classB{}classCextendsA,B{}由上面可以发现类C同时继承了类A与类B,也就是说C类同时继承了两个父类,这在JAVA中是不允许的。多层继承:classA{}classBext
6、endsA{}classCextendsB{}由上面可以发现类B继承了类A,而类C又继承了类B,也就是说类B是类A的子类,而类C则是类A的孙子类。5.3子类对象的构造过程当用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个构造方法,如果子类的构造方法没有指明使用父类的哪个构造方法,子类就调用父类的不带参数的构造方法。因此,我们可以这样来理解子类创建的对象:(1)将子类中声明的成员变量做为子类对象的成员变量。(2)父类的成员变量也都分配了内存空间,但只将其中一部分(继承的那部分)做为子类对象的成员变量。父类的private成员变量尽管分配了内存空间,但它
7、不作为子类的成5.3子类对象的构造过程元变量,即父类的私有成员不归子类管理。方法的继承性与成员变量相同。但若子类和父类不在同一包中,尽管父类的友好成员分配了内存空间,但也不作为子类的成员。子类对象内存示意图如下图子类未继承的成员子类未继承的成员引用子类对象子类继承的成员子类继承的成员子类声明的成员子类声明的成员5.4成员变量的隐藏和方法的重写1.成员变量的隐藏子类可以隐藏继承的成员变量,当在子类中定义和父类中同名的成员变量时,子类就隐藏了继承的成员变量,即子类对象以及子类自己声明定义的方法操作与父类同名的成员变量。
此文档下载收益归作者所有