Java程序设计课件Java程序设计 (4).pdf
《Java程序设计课件Java程序设计 (4).pdf》由会员分享,可在线阅读,更多相关《Java程序设计课件Java程序设计 (4).pdf(104页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java语言程序设计(第2版)第 4 章 类的重用BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRC+语言程序设计(第4版),郑莉,清华大学2BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRR
2、RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学目录 3.1 类的继承 3.2 Object类 3.3 终结类与终结方法 3.4 抽象类 3.5 泛型 3.6 类的组合3BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计
3、(第2版),郑莉,清华大学类的继承 如何充分重用已有的设计和实现,在已有类的基础上设计新的类?继承已有类的全部属性和行为,在此基础上改造、扩展4BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学Object类 所有Java类的直接或间接超类。如果一个类没有继承任何超类,那么就隐含直接继承了Obje
4、ct类5BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学终结类与终结方法 有些类,或类的方法从安全的角度或者算法的角度不希望被修改,就可以设为终结类、终结方法 终结类不可以被继承(扩展)终结方法不可以被覆盖6BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
5、BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学抽象类 如果希望统一规定整个类家族的共同属性和行为,但是又没有统一抽象的行为实现,就可以声明一个抽象超类,包括所有需要子类具有的属性和实现的方法,在超类中无法实现的方法就声明为抽象方法,留待子类各自去实现。由于抽象类中允许有未实现的方法,因此不能生成对象,只能当做超类使用,主要是为了设计的目的和隐藏实现细节7BBBBBBBBBBBBB
6、BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学泛型 不仅数据可以作为参数,类型也可以作为参数。使用类型参数,可以使程序更为通用,适用于处理不同类型的数据 这就是泛型8BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
7、BBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学类的组合 组合是另一种类重用机制部件组装的思想 在声明一个新的类时,用已有类的对象作为成员9BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRC+
8、语言程序设计(第4版),郑莉,清华大学 这就是第3章将要学习的主要内容10结束语BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRC+语言程序设计(第4版),郑莉,清华大学、11BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
9、BBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学类继承的概念 一种由已有的类创建新类的机制,是面向对象程序设计的基石之一12BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),
10、郑莉,清华大学类继承的概念 根据已有类来定义新类,新类拥有已有类的所有功能 Java只支持类的单继承,每个子类只能有一个直接超类 超类是所有子类的公共属性及方法的集合,子类则是超类的特殊化 继承机制可以提高程序的抽象程度,提高代码的可重用性13BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学超类
11、和子类 超类(superclass)也称基类(base class)是被直接或间接继承的类 子类(subclass)也称派生类(derived-class)继承其他类而得到的类 继承所有祖先的状态和行为 派生类可以增加变量和方法 派生类也可以覆盖(override)继承的方法14BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程
12、序设计(第2版),郑莉,清华大学超类和子类 子类对象与超类对象存在“是一个.”(或“是一种.”)的关系15BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学子类对象 从外部来看,它应该包括 与超类相同的接口 可以具有更多的方法和数据成员 其内包含着超类的所有变量和方法16BBBBBBBBBBBBB
13、BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学17继承的语法BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
14、RRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学继承的语法ClassModifier class ClassName extends SuperClassName/类体18BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学类继承举例 设有三个类:Pers
15、on,Employee,Manager。其类层次如图:19PersonEmployeeManagerBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR例:类继承public class Person public String name;public String getName()return name;public class Emplo
16、yee extends Person public int employeeNumber;public int getEmployeeNumber()return employeeNumber;public class Manager extends Employee public String responsibilities;public String getResponsibilities()return responsibilities;BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
17、BBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR例:类继承public class Exam4_2Test public static void main(String args)Employee li=new Employee();li.name=Li Ming;li.employeeNumber=123456;System.out.println(li.getName();System.out.println(li.getEmployeeNumber();Manager he=new
18、 Manager();he.name=He Xia;he.employeeNumber=543469;he.responsibilities=Internet project;System.out.println(he.getName();System.out.println(he.getEmployeeNumber();System.out.println(he.getResponsibilities();运行结果Li Ming123456He Xia543469Internet projectBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
19、BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR例:访问从超类继承的成员子类不能直接访问从超类中继承的私有属性及方法,但可使用公有(及保护)方法进行访问public class B public int a=10;private int b=20;protected int c=30;public int getB()return b;public class A extends B public int d;public void t
20、ryVariables()System.out.println(a);/允许System.out.println(b);/不允许System.out.println(getB();/允许System.out.println(c);/允许 22BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRC+语言程序设计(第4版),郑莉,清华大学 这一节我
21、们学习了类继承的概念、语法,并通过简单的例题观察了如何从一个已有的类派生出辛德雷。23结束语BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRC+语言程序设计(第4版),郑莉,清华大学子类对从超类继承来的属性变量及方法可以重新定义24BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
22、BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学属性的隐藏25BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,
23、清华大学属性的隐藏 子类中声明了与超类中相同的成员变量名 从超类继承的变量将被隐藏 子类拥有了两个相同名字的变量,一个继承自超类,另一个由自己声明 当子类执行继承自超类的操作时,处理的是继承自超类的变量,而当子类执行它自己声明的方法时,所操作的就是它自己声明的变量26class Parent Number aNumber;class Child extends Parent Float aNumber;BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRR
24、RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRJava语言程序设计(第2版),郑莉,清华大学访问被隐藏的超类属性 调用从超类继承的方法,则操作的是从超类继承的属性 本类中声明的方法使用“super.属性”访问从超类继承的属性27BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
25、例:属性的隐藏class A1 int x=2;public void setx(int i)x=i;void printa()System.out.println(x);class B1 extends A1 int x=100;void printb()super.x=super.x+10;System.out.println(super.x=+super.x+x=+x);public class Exam4_4Test public static void main(String args)A1 a1=new A1();a1.setx(4);a1.printa();B1 b1=new B
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java程序设计课件Java程序设计 4 Java 程序设计 课件
限制150内