欢迎来到天天文库
浏览记录
ID:36201971
大小:92.50 KB
页数:48页
时间:2019-05-07
《java语言程序设计基础教程(继承、接口和内部类)ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章 继承、接口和内部类继承、超类和子类抽象类和接口内部类Class类4.1继承、超类和子类继承是面向对象编程技术的一块基石,是一种由已有的类创建新类的机制。运用继承,可以先创建一个通用类,它定义了一系列相关属性的一般特性。该类可以被更具体的类继承,每个具体的类都增加一些自己特有的东西。在Java术语学中,被继承的类叫超类(superclass),继承超类的类叫子类(subclass)。子类不能继承父类中访问权限为private的成员变量和方法。子类可以重写父类的方法,及命名与父类同名的成员变量。Java不支持多重继承,即一个类从多个超类派生
2、的能力。通过继承实现代码复用。Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的。4.1.1子类继承一个类,只要用extends关键字把一个类的定义合并到另一个中就可以了。创建子类的一般格式为:classSubClassextendsSuperClass{…}例如:classStudentsextendsPeople{…}4.1.2子类的继承子类通过隐藏父类的成员变量和重写父类的方法,可以把父类的状态和行为改变为自身的状态和行为。例如:classSuperClass{intx;…voidsetX(){x=0;}…
3、}classSubClassextendsSuperClass{intx;//隐藏了父类的变量x…voidsetX(){//重写了父类的方法setX()x=5;}…}注意:子类中重写的方法和父类中被重写的方法要具有相同的名字,相同的参数表和相同的返回类型,只是函数体不同。【例4-1】一个关于继承的简单例子。//Createasuperclass.classSA{inti,j;voidshowij(){System.out.println("iandj:"+i+""+j);}}//CreateasubclassbyextendingclassA.
4、classSBextendsA{intk;voidshowk(){System.out.println("k:"+k);}voidsum(){System.out.println("i+j+k:"+(i+j+k));}}classSimpleInheritance{publicstaticvoidmain(Stringargs[]){SAsuperOb=newSA();SBsubOb=newSB();//Thesuperclassmaybeusedbyitself.superOb.i=10;superOb.j=20;System.out.pri
5、ntln("ContentsofsuperOb:");superOb.showij();System.out.println();//ThesubclasshasAccesstoallpublicmembersofitssuperclass.subOb.i=7;subOb.j=8;subOb.k=9;System.out.println("ContentsofsubOb:");subOb.showij();subOb.showk();System.out.println();System.out.println("Sumofi,jandkins
6、ubOb:");subOb.sum();}}4.1.3super关键字与类中this关键字相似,Java语言中使用关键字super表示父类对象。通过在子类中使用super做前缀可以引用被子类隐藏的父类变量或被子类重写的父类方法。super用来引用当前对象的父类,虽然构造方法不能够继承,但利用super关键字,子类构造方法中也可以调用父类的构造方法。Super的使用有2种情况:1.操作被隐藏的变量和方法访问父类被隐藏的成员变量,一般格式为:super.variable;调用父类中被重写的方法,一般格式为:super.Method([paramli
7、st]);假如成员变量x和方法y()分别是被子类隐藏的父类的变量和方法,则:super.x//表示父类的成员变量xsuper.y()//表示父类的成员方法y()【例4-2】利用supers操作父类被隐藏和重写的变量和方法。classep4_2_a{intn;floatf(){floatsum=0;for(inti=1;i<=n;i++){sum=sum+i;}returnsum;}}classep4_2_bextendsep4_2_a{intn;floatf(){floatc;super.n=n;c=super.f();returnc/n;}f
8、loatg(){floatc;c=super.f();returnc/2;}}classep4_2{publicstaticvoidmain(Stri
此文档下载收益归作者所有