Java 2实用教程第4版_第5章_子类与继承

合集下载

Java+2实用教程(第4版)实验指导与习题解答 - IT168文库

Java+2实用教程(第4版)实验指导与习题解答 - IT168文库

Java+2实用教程(第4版)实验指导与习题解答 - IT168文库上机实践1初识Java实验1 一个简单的应用程序1.相关知识点Java语言的出现是源于对独立于平台语言的需要,即这种语言编写的程序不会因为芯片的变化而发生无法运行或出现运行错误的情况。

目前,随着网络的迅速发展,Java语言的优势越发明显,Java已经成为网络时代最重要的语言之一。

Sun公司要实现“编写一次,到处运行”(Write once,run anywhere)的目标,就必须提供相应的Java运行平台,目前Java运行平台主要分为下列3个版本。

(1)Java SE:称为Java标准版或Java 标准平台。

Java SE 提供了标准的JDK开发平台。

利用该平台可以开发 Java桌面应用程序和低端的服务器应用程序,也可以开发Java Applet 程序。

当前成熟的新的JDK版本为JDK 1.6。

(2)Java EE:称为Java企业版或Java企业平台。

使用J2EE可以构建企业级的服务应用,Java EE平台包含了Java SE平台,并增加了附加类库,以便支持目录管理、交易管理和企业级消息处理等功能。

(3)Java ME:称为Java微型版或Java小型平台。

Java ME是一种很小的Java运行环境,用于嵌入式的消费产品中,如移动电话、掌上电脑或其他无线设备等。

无论上述哪种Java运行平台都包括了相应的Java虚拟机(Java Virtual Machine),虚拟机负责将字节码文件(包括程序使用的类库中的字节码)加载到内存,然后采用解释方式来执行字节码文件,即根据相应硬件的机器指令翻译一句执行一句。

J2SE平台是学习掌握Java语言的最佳平台,而掌握J2SE又是进一步学习J2EE和J2ME所必需的。

2.实验目的本实验的目的是让学生掌握开发Java应用程序的三个步骤:编写源文件、编译源文件和运行应用程序。

3.实验要求编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,欢迎学习Java”和“We are students”。

java子类继承的规则

java子类继承的规则

java子类继承的规则Java是一门面向对象的编程语言,其中的继承是一个重要的概念。

子类继承了父类的属性和方法,可以进行扩展和重写,使得代码的复用性和可维护性都得到了提高。

本文将详细介绍Java子类继承的规则,包括继承的语法和语义,以及一些常见的注意事项。

一、语法Java中,使用关键字extends来实现类之间的继承关系。

子类继承父类的语法如下:javaclass SubClass extends SuperClass {子类的成员变量和成员方法}其中,SubClass是子类的类名,SuperClass是父类的类名。

二、继承的语义1. 子类继承了父类的非私有成员(属性和方法),包括无参构造方法。

子类对象可以直接访问从父类继承而来的属性和方法,而无需重新定义。

2. 子类可以通过继承来扩展父类的功能。

子类可以新增自己特有的属性和方法,从而实现对父类功能的扩展。

3. 子类可以重写从父类继承而来的方法。

子类可以重新定义与父类方法名相同的方法,从而改变方法的行为,这就是方法的重写。

重写的方法在子类中具有相同的方法名、参数列表和返回类型。

三、构造方法的继承1. 子类继承了父类的构造方法。

子类可以通过super关键字来调用父类的构造方法。

在子类的构造方法中使用super关键字,可以选择调用父类的显式构造方法或者默认构造方法。

2. 如果子类的构造方法没有显示的调用父类的构造方法,则默认调用父类的无参构造方法。

如果父类没有提供无参构造方法,并且子类的构造方法没有显示调用其他父类构造方法,则编译器将会报错。

这是由于子类的构造方法必须先调用父类的构造方法,再执行自己的内容。

3. 子类可以通过super关键字调用父类的特定构造方法。

子类在构造方法中使用super关键字时,可以指定要调用的父类构造方法的参数列表。

这样就可以实现在子类中初始化父类的特定值。

四、继承的限制1. 子类只能继承一个父类(单继承)。

每个类只能有一个直接父类,即使Java中存在多层继承关系,只有最近的那一个父类会被子类继承。

JAVA程序设计(第五章 子类与继承)

JAVA程序设计(第五章 子类与继承)

People
kate instanceof People
ture
mike instanceof People mike instanceof student mike instanceof UniverStudent
Student
kate
false
10
kate instanceof UniverStudent

例11
26
abstract类和abstract方法
用关键字 abstract 修饰的类称为 abstract 类(抽象 类)。如:

abstract class A { …… } 用关键字 abstract 修饰的方法称为 abstract 方法( 抽象方法),例如:

abstract int min(int x,int y);
4
子类的继承性

子类和父类在同一个包中的继承性
子类继承其父类中不是 private 的成员变量和成员方 法作为自己的成员变量和成员方法,继承的成员变量 和成员方法访问权限保持不变



例1:所有的类都在无名包中
Example5_1 People Student UniverStudent
5
子类的继承性

用extends来定义一个子类:
class 子类名 extends 父类名
{ … } class Student extends People { …
3
}
子类与父类

类的树形结构
•任何类都是Object的子孙类 •每个类有且仅有一个父类 •一个类可有多个子类 •一个类的定义中无extends,则默认是 Object的子类

Java2课后选择题

Java2课后选择题

Java2课后选择题Java2课后选择题Java2实用教程(第4版)课后选择题整理(以下内容可能会出现少量错别字,望见谅)――by[小坏蛋~]第一章选择题(1)下列哪个是JDK提供的编译器?A. java.exeB.javac.exeC.javap.exeD. javaw.exe(2)下列哪个是Java应用程序主类中正确的main方法?A. public void main (String args[])B.static void main (String args[])C .public static void Main (String args[])D .public static void main (String args[])第二章.选择题(1)下列哪项字符序列可以作为标识符?A .trueB .default C. _int D.good-class(2)下列哪三项是正确的float变量的声明?A .float foo=-1;B .float foo=1.0;C .float foo=42e1; D. float foo=2.02f;E .float foo== 3.03d; F. float foo== 0x0123;(3)下列哪一项叙述是正确的?A. char型字符在Unicode表中的位置范围是0至__B. char型字符在Unicode表中的位置范围是0至__C. char型字符在Unicode表中的位置范围是0至__D. char型字符在Unicode表中的位置范围是-__至__(4)以下哪两项是正确的char型变量的声明?A. char ch=“R"; B .char ch='\\'C. char ch='ABCD';D. char ch="ABCD";E. char ch='\ucafc';F. char ch='\u__'(5)下列程序中哪些[代码]是错误的?public class E{ public static void main(String args[]){ int x =8;byte b=127; //【代码1】b=x; /【代码2】x=12L; //【代码3】long y=8.0; //【代码4】float z=6.89; //【代码5】}Java2课后选择题}(6)对于int a[]=new int;下列哪个叙述是错误的?A. a.length的值是3。

jAVA基础知识 第5章 子类与继承

jAVA基础知识 第5章 子类与继承

编程学习网1)继承是一种由已有的类创建新类的机制。

2)Java 不支持多重继承,即子类只能有一个父类。

例如:class Student extends People{…..}把Student 类定义为People 的子类。

如果c 是b 的子类,b 又是a 的子类,习惯上称c 是a 的子孙类。

Java 的类 按照继承关系形成树形结构,在这个树形结构中根节点是Object 类(Object 类是ng 包中的类),即Object 类是所有类的祖先类。

如果一个类的声 明中没有使用extends 关键字,这个类被系统默认认为是Object 的子类。

如果子类和父类在同一包中,那么子类自然地继承了父类中不是private 的成员变量和方法。

5.2.2 子类和父类不在同一包中的继承性 编程学习网子类和父类不在同一包中时,父类中的private 和友好访问权限的成员变量不会被子类继承。

子类只继承父类中的protected 和public访问权限的成员变量5.2.3 继承关系的UML 图。

1).当子类的构造方法创建一个子类的对象时,不仅子类中声明的成员变量被分配了内存,而且父类的成员变量也都被分配了内存空间。

但只将子类继承的那部分成员变量作为分配给子类对象的变量。

即子类不继承父类的私有成员变量。

2).如果子类和父类不在同一包中,尽管父类的友好成员变量分配了内存空间,但也不作为子类对象的变量,即如果子类和父类不在同一包中,子类不继承父类的友好成员变量。

编程学习网子类声明的成员变量和从父类继承来的成员变量名字相同,子类就会隐藏所继承的成员变量。

子类继承的方法只能操作子类继承和隐藏的成员变量,子类新定义的方法可以操作子类继承和子类新声明的成员变量,但无法操作子类隐藏的成员变量(需 使用super 关键字操作隐藏的成员变量。

)5.4.2 方法重写(Overwride) 1)子类通过重写可以隐藏已继承的方法。

2)重写规则:子类继承了父类的某个方法,子类就有权重写这个方法,是指子类中定义了一个方法,这个歌方法的类型和父类的方法的类型一致或者是父类的方法的类型的子类型。

Java2课后选择题

Java2课后选择题

Java2课后选择题Java2课后选择题Java2实用教程(第4版)课后选择题整理(以下内容可能会出现少量错别字,望见谅)――by[小坏蛋~]第一章选择题(1)下列哪个是JDK提供的编译器?A. java.exeB.javac.exeC.javap.exeD. javaw.exe(2)下列哪个是Java应用程序主类中正确的main方法?A. public void main (String args[])B.static void main (String args[])C .public static void Main (String args[])D .public static void main (String args[])第二章.选择题(1)下列哪项字符序列可以作为标识符?A .trueB .default C. _int D.good-class(2)下列哪三项是正确的float变量的声明?A .float foo=-1;B .float foo=1.0;C .float foo=42e1; D. float foo=2.02f;E .float foo== 3.03d; F. float foo== 0x0123;(3)下列哪一项叙述是正确的?A. char型字符在Unicode表中的位置范围是0至__B. char型字符在Unicode表中的位置范围是0至__C. char型字符在Unicode表中的位置范围是0至__D. char型字符在Unicode表中的位置范围是-__至__(4)以下哪两项是正确的char型变量的声明?A. char ch=“R"; B .char ch='\\'C. char ch='ABCD';D. char ch="ABCD";E. char ch='\ucafc';F. char ch='\u__'(5)下列程序中哪些[代码]是错误的?public class E{ public static void main(String args[]){ int x =8;byte b=127; //【代码1】b=x; /【代码2】x=12L; //【代码3】long y=8.0; //【代码4】float z=6.89; //【代码5】}Java2课后选择题}(6)对于int a[]=new int;下列哪个叙述是错误的?A. a.length的值是3。

【免费下载】Java2实用教程第四版

【免费下载】Java2实用教程第四版

请称呼我为雷锋
2.关键字就是 Java 语言中已经被赋予特定意义的一些单词,不可以把关键字作为名字来 用。不是关键字。class implements interface enum extends abstract。 3.boolean,char,byte,short,int,long,float,double。 4.float 常量必须用 F 或 f 为后缀。double 常量用 D 或 d 为后缀,但允许省略后缀。 5.一维数组名.length。二维数组名.length。 二、选择题 1.C。2.ADF。3.B。4.BE。5.【代码 2】【代码 3】【代码 4】【代码 5】。6.B。 三、阅读或调试程序 1.低住佐佑佒体佔何佖佗佘余佚佛作佝佞佟你佡 2.答案是: 234<468 我输出结果后不回车我输出结果后自动回车到下一行 x+y= 666 234432=234432 3.属于操作题,解答略。 4.【代码 1】:4。【代码 2】:b[0]=1。 5.【代码 1】:40。【代码 2】:7 四、编写程序 1. public class E {
请称呼我为雷锋
3.x=-5,y=-1 四、编程序题 1.public class jiecheng {
public static void main(String args[]) { double sum=0,a=1; int i=1; while(i<=20) { sum=sum+a; i++; a=a*i; } System.out.println("sum main(String args[]) { System.out.println((int)'你'); System.out.println((int)'我');

java2实用教程第4版_习题解答

java2实用教程第4版_习题解答

习题解答习题一(第1章)一、问答题1.James Gosling2.需3个步骤:1)用文本编辑器编写源文件。

2)使用javac编译源文件,得到字节码文件。

3)使用解释器运行程序。

3.由类所构成,应用程序必须有一个类含有public static void main(String args[])方法,含有该方法的类称为应用程序的主类。

不一定,但最多有一个public类。

4.set classpath=D:\jdk\jre\lib\rt.jar;.;5.java和class6. java Bird7.独行风格(大括号独占行)和行尾风格(左大扩号在上一行行尾,右大括号独占行)二、选择题1.B。

2.D。

三、阅读程序1.(a)Person.java。

(b)两个字节码,分别是Person.class和Xiti.class。

(c)得到“NoSuchMethodError”,得到“NoClassDefFoundError: Xiti/class”,得到“您好,很高兴认识您nice to meet you”习题二(第2章)一、问答题1.用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。

标识符由字母、下划线、美元符号和数字组成,第一个字符不能是数字。

false不是标识符。

2.关键字就是Java语言中已经被赋予特定意义的一些单词,不可以把关键字作为名字来用。

不是关键字。

class implements interface enum extends abstract。

3.boolean,char,byte,short,int,long,float,double。

4.float常量必须用F或f为后缀。

double常量用D或d为后缀,但允许省略后缀。

5.一维数组名.length。

二维数组名.length。

二、选择题1.C。

2.ADF。

3.B。

4.BE。

5.【代码2】【代码3】【代码4】【代码5】。

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

2015/10/12
第 18 页
§5.5.2 使用super调用父类的构造方法 子类不继承父类的构造方法,因此,子类如果想使 用父类的构造方法,必须在子类的构造方法中使用, 并且必须使用关键字 super 来表示,而且 super 必须是 子类构造方法中的头一条语句。 例子8中,UniverStudent是Student的子类, UniverStudent子类在构造方法中使用了super关键字, 运行效果如图5.8。
注意:开始用功了!
2015/10/12
第 1 页
《Java2实用教程(第4版)》 第5章
子类与继承
配合例子源代码一起使用
2015/10/12
第 2 页
导读
主要内容 • 子类与父类 • 子类的继承性 • 子类与对象 • 成员变量的隐藏和方法重写 • super关键字 • final关键字 • 对象的上转型对象 • 继承与多态 • abstract类与abstract方法 • 面向抽象编程 • 开-闭原则
§5.4.1 成员变量的隐藏
对于子类可以从父类继承的成员变量,只 要子类中声明的成员变量和父类中的成员变 量同名时,子类就隐藏了继承的成员变量, 子类自己声明定义的方法操作与父类同名的 成员变量是指子类重新声明定义的这个成员
变量。
2015/10/12
第 13 页
例子 3(Example5_3.java) 中, Goods 类有一个名 字 为 weight 的 double 型 成 员 变 量 , 本 来 子 类 CheapGoods 可 以 继 承 这 个 成 员 变 量 , 但 是 子 类 CheapGoods又重新声明了一个int型的名字为weight 的成员变量.程序运行效果如图5.4 .
2015/10/12
第 19 页
§5.6 final关键字
final 关键字可以修饰类、成员变量和方 法中的局部变量。 §5.6.1 final类 可 以 使 用 final 将 类 声 明 为 final 类 。 final类不能被继承,即不能有子类。如: final class A { … … }
2015/10/12
第 20 页
§5.7 对象的上转型对象 假设, A 类是 B 类的父类,当用子类创建一 个对象,并把这个对象的引用放到父类的对象 中时,比如:
A a; a=new B(); 或 A a; B b=new B(); a=b;
这时,称对象a是对象b的上转型对象。
2015/10/12
第 10 页
§5.2.3 继承关系(Generalization)的UML图
如果一个类是另一个类 的子类,那么 UML 通过使 用一个实线连接两个类的 UML 图来表示二者之间的 继承关系,实线的起始端 是子类的 UML 图,终点端 是父类的 UML 图,但终点 端使用一个空心的三角形 表示实线的结束。
2015/10/12
第 7 页
§5.2.1 子类和父类在同一包中的继承性
如果子类和父类在同一个包中,那么,子
类自然地继承了其父类中不是 private的成员变
量作为自己的成员变量,并且也自然地继承了
父类中不是private的方法作为自己的方法,继
承的成员变量或方法的访问权限保持不变。
2015/10/12
2015/10/12
第 5 页
5.1.2类的树形结构
Java的类按继承关系形成树形结构这个树 形结构中,根节点是Object类 ( Object 是 ng 包 中 的 类 ) , 即 Object是所有类的祖先类。 除了Object类每个类有且仅有一个父类, 一个类可以有多个或零个子类。如果一个类 (除了Object类)的声明中没有使用extends关 键字,这个类被系统默认为是 Object的子类, 即类声明“class A”与“class A extends Object” 是等同的。
5.3.2 关于instanceof运算符 instanceof 运算符是 Java独有的双目运算符,其左面的操作 元是对象,右面的操作元是类,当左面的操作元是右面的类或 其子类所创建的对象时,instanceof运算的结果是true,否则是 false
2015/10/12
第 12 页
§5.4 成员变量的隐藏和方法重写
用关键字 abstract 修饰的类称为 abstract 类(抽 象类)。如:
abstract class A { … … }
用 关 键 字 abstract 修 饰 的 方 法 称 为 abstract 方 法 (抽象方法),例如:
abstract int min(int x,int y);
注意: 1.abstract类中可以有abstract方法 2.abstract类不能用new运算创建对象 例子12 使用了abstract类
2015/10/12
第 25 页
编程题
1、求一元2次方程的根。 2、求两数的最大公约数与最小公倍数。
2015/10/12
第 30 页
2015/10/12
第 31 页
2015/10/12
第 9 页
§5.2.2 子类和父类不在同一包中的继承性
如果子类和父类不在同一个包中,那么, 子类继承了父类的protected、public成员变 量做为子类的成员变量,并且继承了父类的 protected、public方法为子类的方法,继承 的成员或方法的访问权限保持不变。
2015/10/12
2015/10/12
第 16 页
3.重写的注意事项
重写父类的方法时,不允许降低方法的访问权限,但可以 提高访问权限(访问限制修饰符按访问权限从高到低的排列顺 序是:public、protected、友好的、private。)
4.JDK1.5对重写的改进
在JDK1.5版本之后,允许重写方法的类型可以是父类方法 的类型的子类型,即不必完全一致(JDK1.5版本之前要求必须 一致),比如父类的方法的类型是 People,重写方法的类型可 以是Student(假设Student是People的子类) 例子6中,父类的方法是Object类型,子类重写方法的类型是 Integer类型
2015/10/12
第 15 页
在下面的例子4(Example5_4.java)中, ImportantUniversity是University类的子类,子类重写了父类 的enterRule()方法,运行效果如图5.5。
在下面的例子 5中,子类 B重写了父类的 computer() 方法,运行效果如图5.6。
2015/10/12
第 17 页
§5.5 super关键字
5.5.1 用super操作被隐藏的成员变量和方法
子类可以隐藏从父类继承的成员变量和方法,如果 在子类中想使用被子类隐藏的成员变量或方法就可以 使用关键字 super。比如 super.x、super.play() 就是 访问和调用被子类隐藏的成员变量x和方法play(). 例子7中,子类使用super访问和调用被子类隐藏 的成员变量和方法,运行效果如图5.7。
2015/10/12
第 6 页
§5.2 子类的继承性
所谓子类继承父类的成员变量作为自己 的一个成员变量,就好象它们是在子类中直 接声明一样,可以被子类中自己定义的任何 实例方法操作。 所谓子类继承父类的方法作为子类中的 一个方法,就好象它们是在子类中直接定义 了一样,可以被子类中自己定义的任何实例 方法调用。
例子10 中,monkey是People类型对象的上转型对象,运行效果如图5.10。
2015/10/12
第 23 页
§5.8 继承与多态
多态性就是指父类的某个方法被其子类重写时,可 以各自产生自己的功能行为,下面的例子 11 展示了多 态,运行效果如图5.11。
2015/10/12
第 24 页
§5.9 abstract类和abstract()方法
2015/10/12
第 3 页
§5.1 子类与父类 利用继承,可以先编写一个共有属性的一 般类,根据该一般类再编写具有特殊属性的 新类,新类继承一般类的状态和行为,并根 据需要增加它自己的新的状态和行为。 由继承而得到的类称为子类第 4 页
5.1.1 声明子类 使用关键字extends来定义一个类的子类,格式如 下: class 子类名 extends 父类名 { … } 例如: class Student extends People { … } 把Student类定义为People类的子类、People类是 Student类的父类
第 8 页
下面的例子 1 中有 4 个类: People,Student.java, UniverStudent.java和Example5_1,这些类都没有包 名(需要分别打开文本编辑器编写、保存这些类的 源 文 件 , 比 如 保 存 到 C:\ch5 目 录 中 ) , 其 中 UniverStudent 类 是 Student 的 子 类 , Student 是 People的子类。程序运行效果如图5.1。
第 22 页
1 .上转型对象不能操作子类新增的成员变量;不能调用子类 新增的方法。 2 .上转型对象可以访问子类继承或隐藏的成员变量,也可以 调用子类继承的方法或子类重写的实例方法。上转型对象操作 子类继承的方法或子类重写的实例方法,其作用等价于子类对 象去调用这些方法。因此,如果子类重写了父类的某个实例方 法后,当对象的上转型对象调用这个实例方法时一定是调用了 子类重写的实例方法。
2015/10/12
第 14 页
§5.4.2 方法重写(Override) 子类通过重写可以隐藏已继承的实例方法。 1.重写的语法规则 如果子类可以继承父类的某个实例方法,那么子类就 有权利重写这个方法。 方法重写是指:子类中定义一个方法,这个方法的类 型和父类的方法的类型一致或者是父类的方法的类型的 子类型,并且这个方法的名字、参数个数、参数的类型 和父类的方法完全相同。 2.重写的目的 子类通过方法的重写可以隐藏继承的方法,子类通 过方法的重写可以把父类的状态和行为改变为自身的状 态和行为。
相关文档
最新文档