4继承与多态-1pp

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.1继承---解决重用问题

拷贝、粘贴源代码

–低级重用

类的重用

–不需要源代码,只要class文件

–javap文件名可得到类的public方法头

2

4.1.1 Java的继承

[修饰符] 子类名extends 父类名

{

类体

}

•没有extends,默认父类为Object

•只能有一个父类,即单继承

•子类继承父类的非私有部分

•类继承具有传递性

6

子类与父类的属性与方法

父类中的private部分子类不能直接引用

子类中新增加的属性和方法是对父类的扩

子类中定义的与父类同名的属性是对父类

属性的隐藏,同名的方法是对父类方法的

重载或覆盖

7

public class Book{

protected int pages;

public Book(int numPages) {

pages = numPages;

}

public void pageMessage()

{

System.out.println("Number of pages: " + pages);

}

}

9

public class Dictionary extends Book{

private int definitions;

public Dictionary(int numPages, int numDefinitions) { super (numPages);

definitions = numDefinitions;

}

public void definitionMessage() {

System.out.println("Number of definitions: " + definitions);

System.out.println("Definitions per page: " + definitions/pages);

}

}

10

public class Words {

public static void main(String[] args) { Dictionary webster= new Dictionary (1500, 52500);

webster.pageMessage();

webster.definitionMessage();

}

}

11

4.1.2 子类的构造方法

•若子类中没有构造方法,则执行父类中的无参构造方法;

•若子类定义了构造方法,则在创建新对象时,先执行父类的无参数构造方法,再执行自己的构造方法

•对于父类中含有参数的构造方法,子类可以在自己的构造方法中应用super 调用它。

12

public class Book{

……

public void pageMessage()

{

System.out.println("Number of pages: " + pages);

}

}

public class Dictionary extends Book{

……

public void pageMessage()

{

super.pageMessage();

System.out.println("Number of definitions: " + definitions);

}

}

13

4.1.3 类对象之间的类型转换 若将子类对象赋给父类对象,则可以用显

式或隐式实现,即可以直接将子类对象直

接赋给父类对象;

若将父类对象赋给子类对象,则必须使用

显式转换,即强制类型转换。

形参是父类对象,子类对象可为实参

14

class Person

{

private String name;

private int age;

public Person(String name,int age)

{

=name;

this.age=age;

}

public void sayHello(Person another)

{

System.out.println("Hello"+ + " ! "+

" my name is "+ name);

}

}

15

class Student extends Person

{

private String school;

public Student(String name,int age,String school)

{super(name,age);

this.school=school;

}

}

class Teacher extends Person

{

private String department;

public Teacher(String name,int age,String department)

{super(name,age);

this.department=department;

}

}

16

相关文档
最新文档