欢迎来到天天文库
浏览记录
ID:37606379
大小:873.00 KB
页数:62页
时间:2019-05-13
《Java程序设计-7-继承和接口》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java程序设计第七章继承、接口学习目标理解继承的含义以及类的层次关系理解抽象类和具体类的区别理解多态的含义以及如何实现多态理解类型系统理解接口以及实现接口理解接口和抽象的区别理解基本的设计模式和实现掌握Object类,掌握主要方法的作用理解对象相等性的判断机制继承是自然界的一种普遍现象。作为面向对象技术的实现,Java提供了通过继承创建新类来实现类的重用,在清晰的描述问题域的层次体系时,继承有着重要的作用。作为系统建模的一种主要原则,理解继承的关键在于能够认识抽象的作用。本质上接口是一种设计模式,它和继承
2、还有着一定的区别,在开发中它的使用更加频繁。作为本章的另外一个重要内容,类型的转换机制也是需要认真领会的。7.1类的层次结构层次是我们生活中经常可见的一种结构。例如一个企业通常有着明晰的组织结构,除了这种组织结构外,另外一种典型的层次结构就是分类结构了,例如有关生物的分类:在Java语言中,所有的类都有着严格的层次体系,除了根类,每个类都有着唯一的超类7.2创建现有类的子类从Java编程语言的角度来看,继承发生在一个被称为“超类”(或者称为“基类”superclass)与一个被称为“子类”(subclass
3、)之间,用extends来实现,如:classChildClassextendsSuperClass{//...}这里表示子类ChildClass派生于超类SuperClass。准确的说,我们创建了属于SuperClass类的一个新的子类型。在发生继承关系时,一个子类对于超类的继承表现在以下几个方面:继承超类的属性继承超类的方法使用超类的构造函数1.继承超类的属性一个子类继承超类的属性之后能否使用取决于超类属性的访问属性以及子类和超类所属包的关系,图5-3说明了这个问题。根据继承规则,如图7-3中显示的那样
4、:当超类和子类在同一包中时,子类可以继承(既可以直接使用)超类中除private修饰的一切属性而当超类和子类不在同一个包内时,子类除了超类中用private修饰的属性不能继承外,超类中那些没有明确访问范围的属性也不能被继承。所以,当明确一个类需要作为基类来使用时,考虑清楚每一个数据成员的访问范围是很重要的。2.继承超类的方法子类对于超类方法(不包括超类的构造函数)的继承规则和上述的属性继承规则一样。在超类中被说明为private的方法不能被子类继承使用,那些没有说明访问范围的方法,只有当子类和超类在一个包内
5、才可以被继承使用,除此之外,超类的其它方法都可以被子类继承使用。7.2.2使用super访问超类的构造方法使用超类的构造方法构造方法不同于一般的方法,子类无法使用超类的构造方法作为自己的构造方法,子类必须有自己的构造方法,但可以使用父类的构造方法,形式是。super(x,…);调用父类构造方法时应遵循的原则:只能在子类中调用父类的构造方法,而且必须是第一条语句,即不要在父类构造方法前放任何子类构造方法代码.调用父类构造方法时,必须使用super(…)。如果父类没有显式声明构造方法,则子类中可以不用调用父类构
6、造方法,但也可调用父类默认的无参数的构造方法,形式如super()一个超类publicclassStudent{Stringstudentid;//学生编号Stringname;//学生姓名Stringspeciality;//专业publicStudent(Stringstudentid,Stringname){this.studentid=studentid;this.name=name;}//分配专业publicvoidassignSpeciality(Stringspeciality){this.s
7、peciality=speciality;}//定义该对象的字符串表示publicStringtoString(){returnstudentid+","+name+","+speciality;}}一个继承于Student的子类publicclassPostgraduateextendsStudent{Stringorientation;//增加了研究方向publicPostgraduate(Stringstudentid,Stringname,Stringorientation){super(stude
8、ntid,name);//调用超类Student的构造函数this.orientation=orientation;}publicvoidchangeOrientation(StringnweOrientation){//变更研究方向this.orientation=nweOrientation;}publicstaticvoidmain(String[]args0){Postgraduatestudent=ne
此文档下载收益归作者所有