欢迎来到天天文库
浏览记录
ID:37569842
大小:894.50 KB
页数:43页
时间:2019-05-25
《Java就业培训教程第四章 面向对象(下)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第4章面向对象(下)4.1类的继承面向对象的重要特色之一就是能够使用以前建造的类的方法和属性。通过简单的程序代码来建造功能强大的类,会节省很多编程时间,而且更为重要的是,这样做可以减少代码出错的机会。类的继承讲的就是这方面的问题。4.1.1继承的特点我们还是通过一个实际应用问题,来引出类的继承这个问题的讲解。我们常常在编程中遇到下面的情况:publicclassPerson{publicStringname;publicintage;publicStringgetInfo(){...}}publicclassStudent{pub
2、licStringname;publicintage;publicStringschool;publicStringgetInfo(){...}publicStringstudy(){...}}在上面的程序中,我们先定义了一个Person类来处理个人信息,接着又定义一个Student类来处理学生信息,结果发现Student类中包含了Person类的所有属性和方法。针对这种情况,Java为我们引入了继承这个概念,我们只要表明类Student继承了类Person的所有属性与方法,我们就不用在类Student中重复书写类Person中的
3、代码了,更确切的说是简化了类的定义。我们是通过extends关键字来表明类Student具有类Person的所有属性与方法,如果让Student类来继承Person类,Person类里面的所有可继承的属性和方法(后面我们会讲到什么是可继承的,什么是受限制的),都可以在Student类里面使用了,也就是说Student这个类继承了Person类,拥有了Person类所有的特性,除此之外还有一些自己的特性,如:学生有学校名和学习的动作。因此,我们就说Person是Student的父类(也叫基类或超类),Student是Person的子
4、类。例如上面的两个类,我们就可以简写成下面的代码:publicclassPerson{publicStringname;publicintage;publicStringgetInfo(){...}}publicclassStudentextendsPerson148{publicStringschool;publicStringstudy(){...}}完整代码如下:程序清单:Student.javaclassPerson{publicStringname;publicintage;publicPerson(Stringname
5、,intage){this.name=name;this.age=age;}publicPerson()//如果你不写这个构造函数,看看对类Student有什么影响。{}publicvoidgetInfo(){System.out.println(name);System.out.println(age);}}classStudentextendsPerson{publicvoidstudy(){System.out.println("Studding");}publicstaticvoidmain(String[]args){P
6、ersonp=newPerson();p.name="person";p.age=30;p.getInfo();Students=newStudent();s.name="student";s.age=16;s.getInfo();s.study();}148}要在以前的类上构造新类,必须要在新类的声明中扩展以前的类。通过扩展一个超类,你可以得到这个类的一个拷贝,并可以在这个基础上添加新的属性和方法。如果你对这个新类并不做什么添加工作,那么它的工作情况会与超类完全相同。新类中会含有超类所声明或继承的所有属性和方法。在类的继承中,有
7、这样的一些细节问题:1).通过继承可以简化类的定义,我们已经在上面的例子中了解到了。2).Java只支持单继承,不允许多重继承。在Java中,一个子类只能有一个父类,不允许一个类直接继承多个类,但一个类可以被多个类继承,如类X不可能既继承类Y又继承类Z。3).可以有多层继承,即一个类可以继承某一个类的子类,如类B继承了类A,类C又可以继承类B,那么类C也间接继承了类A。这种应用如下所示:classA{}classBextendsA{}classCextendsB{}4).子类继承父类所有的成员变量和成员方法,但不继承父类的构造方法
8、。在子类的构造方法中可使用语句super(参数列表)调用父类的构造方法。如:我们为Student类增加一个构造方法,在这个构造方法中我们用super明确指定调用父类的某个构造方法。classStudentextendsPerson{publicSt
此文档下载收益归作者所有