欢迎来到天天文库
浏览记录
ID:43092067
大小:809.00 KB
页数:79页
时间:2019-09-29
《JAVA初级教程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、JAVA语言吕俊白第5章继承、接口与泛型主要内容:继承成员变量的隐藏和方法的重写继承与多态最终类与最终方法final抽象类abstract接口异常及其处理内部类、匿名类和泛型类5.1继承关系的定义继承是一种由已有的类创建新类的机制。利用继承,我们可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为。由继承而得到的类称为子类,被继承的类称为父类(超类)。利用继承有利于实现代码的重复使用,子类只需要添加新的功能代码即可。Java不支持多重继承
2、,即子类只能有一个父类。在类的声明中,使用关键字extends来声明一个类是另外一个类的子类,格式如下:class子类名extends父类名{……}其中:父类可以是自己编写的类也可以是java类库中的类。classStudentsextendspeople{……}如果一个类的声明中没有使用关键字extends,这个类被系统默认为是Object类的子类,Object类是包java.lang中的类。例如:classA{……}等价于:classAextendsObject{……}所谓类继承就是子类继承父类的成员变量和方法作为
3、自己的成员变量和方法,就好象它们是在子类中直接声明一样。1.子类和父类在同一包中的继承性如果子类和父类在同一个包中,那么,子类自然地继承了其父类中非private的成员变量作为自己的成员变量,并且也自然地继承了父类中非private的方法作为自己的方法。继承的成员变量以及方法的访问权限保持不变。2.子类和父类不在同一包中的继承性如果子类和父类不在同一个包中,那么,子类只能继承父类的protected、public成员变量和方法,继承的成员变量或方法的访问权限不变。但子类不能继承父类的友好变量和友好方法。5.2子类对象的
4、构造过程当用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个构造方法,如果子类的构造方法没有指明调用父类的哪个构造方法,子类就调用父类的不带参数的构造方法。子类对象的创建:(1)将子类中声明的成员变量做为子类对象的成员变量。(2)父类的成员变量也都分配了内存空间,但只将其中一部分(继承的那部分)做为子类对象的成员变量。例如:classA{privateintx=10;protecteddoubley=12.56;voidf(){y=y+x;System.out.printf("x=%d,y=%f
5、n",x,y);}}classBextendsA{doublez=12;voidg(){z=y+100;System.out.printf("z=%f",z);}}classExample_5_2{publicstaticvoidmain(Stringargs[]){Bb=newB();b.f();//调用从父类继承的方法。b.g();//调用子类自己声明的方法。}}5.3成员变量的隐藏和方法的重写1.成员变量的隐藏子类可以隐藏继承的成员变量。当在子类中定义的成员变量和父类中的成员变量同名时,子类就隐藏了继承的成员
6、变量。例如:classA{protecteddoubley=12.56;voidprinty(){System.out.printf("y=%f",y);}}classBextendsA{inty=0;voidg(){y=y+100;System.out.printf("y=%d",y);}}classExample_5_3{publicstaticvoidmain(Stringargs[]){Bb=newB();b.y=-50;b.g();b.printy();}}当子类执行继承自父类的操作时,处理的是继承自
7、父类的变量,而当子类执行它自己定义的方法时,所操作的就是它自己定义的变量。2.方法重写子类也可以隐藏已继承的方法,子类通过方法重写来隐藏继承的方法。方法重写是指:子类中定义一个方法,并且这个方法的名字、返回类型、参数个数和类型与从父类继承的方法完全相同。子类通过方法的重写可以把父类的状态和行为改变为自身的状态和行为。此时,如果子类想使用被隐藏的方法,必须使用关键字super。例如:classA{protecteddoublex=10,y=12.56;publicvoidspeak(){System.out.printl
8、n("我喜欢NBA");}publicvoidcry(){y=x+y;System.out.printf("y=%f",y);}}classBextendsA{inty=100,z;publicvoidspeak(){z=2*y;System.out.println("IloveThisGame");System.out.pr
此文档下载收益归作者所有