欢迎来到天天文库
浏览记录
ID:50289422
大小:161.50 KB
页数:22页
时间:2020-03-07
《Java程序设计修改-ch0.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第4章继承和多态继承是Java语言的一个重要特性。本章主要介绍关于继承的若干应用。通过继承,子类拥有父类的所有非私有成员。子类对继承自父类的类成员重新进行定义,就称为覆盖。方法的重载是一个类中对自身已有的同名方法的重新定义。每个重载方法的参数的类型和(或)数量必须是不同的。用abstract修饰符修饰的类称为抽象类,抽象类不能实例化为对象。如果一个类被final修饰符所修饰,说明这个类不可能有子类,这样的类就称为最终类。最终类不能被别的类继承,它的方法也不能被覆盖。接口用interface来声明。接口中的域变量都是常量,方法都是没有方法体的抽象方法,其方法的真正实现在“继承”
2、这个接口的各个类中完成。一个类只能有一个父类,但是类可以同时实现若干个接口,从而实现了多重继承。本章要点l继承和多态的概念、特点以及实现方法l域的继承与隐藏l方法的继承与覆盖l接口的实现本章难点l继承和多态的实现方法l接口的实现学习目标l理解继承、多态、接口的概念l掌握继承、多态、接口在Java中的实现。4.1继承和多态的概念4.1.1继承的概念继承实际上是存在于面向对象程序中的两个类之间的一种关系。当一个类A能够获取另一个类B中所有非私有的数据和操作的定义作为自己的部分或全部成分时,就称这两个类之间具有继承关系。被继承的类B称为父类或超类,继承了父类或超类的数据和操作的类A
3、称为子类或衍生类,一个父类可以同时拥有多个子类。使用继承具有以下的好处:降低了代码编写中的冗余度,更好地实现了代码复用的功能,从而提高了程序编写的效率,使得程序维护变得简单、方便。现以汽车为例,汽车分为很多种,比如公共汽车、警车、私家车等。如果要实现对汽车的管理,就需要为每一种汽车创建一个类,而每一个类中都会具有所有汽车共有的属性和方法,比如每个汽车类都会有颜色、车灯等属性,都会有加速、刹车等方法,这样势必带来代码的重复,维护起来也比较麻烦。如果我们将所有汽车共有的属性和方法都抽象出来,构建一个汽车类,让各种汽车都继承这个类,这样在汽车这个类中所拥有的属性就会衍生在它的子类中
4、,各种汽车都会具有汽车类所拥有的属性和方法,我们就不用为每种汽车定义像颜色、车灯这样的属性,以及加速、刹车等相同的方法了。而且维护起来也比较容易了。这种结构如图4-1所示。汽车类颜色、车灯加速()、刹车()公共汽车警车私家车图4-1汽车类的继承继承分为单重继承和多重继承两种类型,所谓单重继承,是指任何一个类都只有一个单一的父类;而多重继承是指一个类可以有一个以上的父类。采用单重继承的程序结构比较简单,是单纯的树状结构,掌握、控制起来相对容易;而支持多重继承的程序,其结构则是复杂的网状,设计、实现都比较复杂。Java语言仅支持类的单重继承。4.1.2多态的概念多态是面向对象程序
5、设计的又一个特殊特性。所谓多态,是指一个程序中同名的不同方法共存的情况。面向对象的程序中多态的情况有多种,可以通过子类对父类成员的覆盖实现多态,也可以利用在同一个类中同名方法的重载来实现多态。多态是指一个方法声明的多个不同表现形式。在同一个类中或者不同的类中,同一个方法的多个不同实现。比如同样是刹车这样一个功能,在不同的汽车中所要做的操作可能是不一样的,这样我们在程序中就要为刹车这个方法名创建几个不同的实现,也就是说,刹车这个方法名可能会有几个不同的方法体,这就是面向对象程序设计中多态的概念。4.2类的继承4.2.1继承的实现Java中的继承是通过extends关键字来实现的
6、,在定义类时使用extends关键字指明新定义类的父类,就在两个类之间建立了继承关系。其语法是:[类修饰符]class子类名extends父类名从上面的语法格式,我们可以看出比一般类的声明多了“extends”关键字部分,通过该关键字来指明子类要继承的父类。如果,父类和子类不在同一个包中,则需要使用“import”语句来引入父类所在的包。【例4_1】继承的简单示例。classFather{intf_a=0;voidprint(){System.out.println("f_a="+f_a);}}classSonextendsFather{ints_a=10;}classExa
7、m4_1{publicstaticvoidmain(String[]args){Sons=newSon();s.print();System.out.println("f_a="+s.f_a);System.out.println("s_a="+s.s_a);}}在例子中可以看到,在子类的声明中使用“extends”关键字指明一个被继承的父类就可以实现类之间的继承关系。Son类中虽然并没有定义f_a变量和print()方法,但是仍然可以访问,这是因为它从父类中继承过来的原因。子类Son还定义了自己的变量
此文档下载收益归作者所有