- 1、本文档共80页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java程序设计基础第8章
第8章继承、抽象类和接口 信息科学技术学院 一、子类的创建 为什么要用到继承? 引例 现有类Person,包含属性姓名、性别、年龄。 要定义一个Student类,只比Person多一个学号属性。 我们要从头开始定义类,还是借助已有的Person类? 什么是继承? 继承(Inheritance)是面向对象编程的核心机制之一,其本质是在已有类型基础之上进行扩充或改造,得到新的数据类型,以满足新的需要。 一个类A可以通过继承的方式获得另一个类B中的属性和方法,此时称类B为父类或超类,类A为子类。 类A除了获取类B的属性和方法外,还可以自己声明自己特有的属性和方法。 单重继承和多重继承 Java只支持单继承,不允许多重继承。 一个子类只能有一个父类 一个父类可以派生出多个子类 类继承语法 类声明语法格式扩充 继承的例子 是否所有父类的成员都可被继承? 父类中的private成员变量和方法不能被子类继承。 父类中的友好成员变量和方法可以被同一个包中的子类继承,但不能被不同包的子类继承。 父类中public成员变量和方法可被子类继承。 父类中protected成员变量和方法可被同包的子类继承,也可被不同包的子类继承,在被不同包的子类继承时有其特殊的用法,此处暂不介绍。 例8.1类的继承,创建个人类Person,再以该类为父类创建一个学生子类Student。 class Person {private String name; Private int age; Public Person( ) {System.out.println(“调用了个人类的构造方法Person()”);} Public void setNameAge(String name,int age) {=name; this.age=age;} Public void show() {System.out.println(“姓名:”+name+”年龄:”+age); }} class Student extends Person {private String department; Public Student( ) {System.out.println(“调用了学生类的构造方法Student()”);} Public void setDepartment(String dep) {department=dep; System.out.println(“我是”+department+”的学生”);} } Public class App8_1 {private static void main(String[] args) {Student stu=new Student(); Stu.setNameAge(“张小三”,21); Stu.show(); Stu.setDepartment(“计算机系”);} } 运行结果: 调用了个人类的构造方法Person() 调用了学生类的构造方法Student() 姓名:张小三 年龄:21 我是计算机系的学生 注意:在执行子类的构造方法前,先自动调用父类中没有参数的构造方法,为继承自父类的成员做初始化操作。 例8.2以Person为父类,创建学生子类Student,并在子类中通过super()调用父类里特定的构造方法。 class Person {private String name; Private int age; Public Person( ) {System.out.println(“调用了Person类的无参构造方法”);} Public Person(String name, int age ) {System.out.println(“调用了Person类的有参构造方法”); =name; this.age=age; } Public void show() {System.out.println(“姓名:”+name+”年龄:”+age); }} class Student extends Person {private String department; Public Student( ) {System.out.println(“调用了学生类的无参构造方法Student()”);} Public Student(String name,int age,String dep ) {super(name.age); Department=dep; System.out.println(“我是”+department+”的学生”); System.out.println(“调用了学生类的有参构造方法Student(String name,int age,String dep )”);} }
文档评论(0)