Java 2实用教程第5版_第5章_子类与继承
- 格式:ppt
- 大小:732.50 KB
- 文档页数:34
java语言的类间的继承关系1. 前言Java语言作为一门面向对象编程(OO)语言,其中最重要的特性之一是继承(Inheritance)。
继承使得一个类可以从另一个类中继承其特征,使得代码复用变得更加高效。
本文旨在介绍Java语言中类间的继承关系,从什么是继承开始,到如何在代码中使用继承,包括继承的类型、继承的规则和优缺点等。
2. 什么是继承继承(Inheritance)可以定义为一个类(子类)继承属性和方法的过程,这些属性和方法是已经存在于另一个类(父类)中的。
子类可以从父类继承其属性和方法,同时还可以添加自己的属性和方法。
在Java语言中,继承关系是一种“is-a”(是一个)关系,例如:“狗”是“动物”的一种,因此可以定义一个“狗”类,使其继承“动物”类的属性和方法。
3. 继承的类型Java语言中,有两种类型的继承,分别是类继承和接口继承。
3.1 类继承类继承指的是一个类从另一个类中继承其属性和方法。
在Java语言中,一个父类可以有多个子类,但是一个子类只能有一个直接父类。
如果一个子类有多个父类,则会构成多重继承。
Java语言中不支持多重继承的原因是,这会造成命名冲突,无法确定调用哪个方法。
3.2 接口继承接口继承指的是一个接口从另一个接口中继承其方法签名。
在Java语言中,一个类可以实现多个接口,但是一个接口只能继承一个接口。
4. 继承的规则在Java语言中,有一些规则限制了继承的使用。
这些规则是:4.1 访问修饰符子类可以继承父类中的方法和属性,但是子类不能访问父类中的私有属性和私有方法。
另外,子类可以访问父类中的公有属性和公有方法。
4.2 构造函数子类不能继承父类的构造函数,但是可以通过调用父类的构造函数来初始化父类中的属性。
4.3 方法重写子类可以重写父类中的方法,以实现子类自己的特定需求。
在重写方法时,子类必须使用相同的方法签名(名称、参数列表和返回类型)。
4.4 super关键字子类可以使用super关键字来调用父类中的方法或属性。
Java2实用教程(第三版)课后习题参考答案第1章 Java入门1. 开发与运行Java程序需要经过哪些主要步骤和过程?答:(1)编写Java源文件:使用文本编辑器(Edit或记事本),拓展名为。
java(2)编译Java源文件:使用Java编译器(javac。
exe)。
得到字节码文件*.class(3)运行Java程序:Java应用程序使用Java解释器(java。
exe)执行字节码文件;Java小应用程序使用支持Java标准的浏览器来执行.2。
怎样区分应用程序和小应用程序?应用程序的主类或小应用程序的主类必须用public修饰吗?答: ①应用程序必须有main方法,这个方法是程序执行的入口。
小应用程序没有main方法。
②应用程序的主类不一定用public修饰;小应用程序的主类必须用public修饰。
3. Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎样的?答:①Java程序由类组成.②应用程序可以没有public类;小应用程序一定有一个类是public类(主类)。
③应用程序:如果只有一个类,源文件名与该类的类名相同,拓展名为。
java;有多个类时,如果有public类(最多一个),源文件名与public类的类名相同,拓展名是.java;没有public类,源文件名与任何一个类的类名相同即可,拓展名为。
java.小应用程序:源文件名与主类的类名相同,拓展名是。
java。
4. 在运行小程序的HTML文件中可以使用codebase属性指定小程序的字节码所驻留的目录。
如果不使用codebase属性,小程序的字节码文件必须和运行它的HTML文件在同一目录中。
编写一个小程序并将小程序的字节码存放在某个目录中,比如C:\5000;把运行该小程序的HTML文件(注意其中的codebase属性):<applet code=你的小程序的字节码 width=200 height=300 codebase=C:\5000〉</applet>存放在另一个目录中。
Java大学实用教程课后答案第一章1.发明java的原因是什么,发明java的主要贡献者是谁?答:开发java语言的动力源于对独立平台的需要,即用这种语言编写的程序不会因为芯片的变化而发生无法运行或出现运行错误的情况。
当时,c语言已无法满足人们的这一愿望,因为c语言总是针对特定的芯片将源程序编译成机器码,该机器码的运行就与特定的芯片指令有关,在其他类型的芯片上可能无法运行或者运行出错。
主要贡献者是James Gosling。
2.“java编译器将源文件编译生成的字节码是机器码”,这句话正确吗?答:不正确,字节码是很接近机器码的二进制文件,不能被机器直接识别。
3. java应用程序的主类必须含有怎么样的方法?4. "java应用程序必须有一个类是public类".这句话正确吗?答:一个java应用程序必须有一个类含有public static void main(String args[] )方法,称为该应用程序的主类。
5. "java applet程序的主类必须是public类",这句话正确吗?不正确"java applet源文件的主类必须是public类",这句话正确吗?正确6. 叙述java源文件的命名法则。
答:(1)如果源文件中有多个类,那么只能有一个类是public类。
(2)如果有一个类是public类,那么源文件的名字必须和这个类的名字完全相同,扩展名为.java(3)如果源文件没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名为.java就可以了。
(4)java 语言区分大小写。
7. 源文件生成的的字节码运行时加载到内存中吗?8. 怎样编写加载运行java applet的简单网页?9. JDK1.6编译器使用"-source"参数的作用是什么,其默认的参数取值是什么?答:在编译源文件时使用"-source"参数来约定字节码适合的java 平台。
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。
实验1中国人、北京人和美国人1 相关知识点由继承而得到的类称为子类,被继承的类称为父类(超类),Java不支持多重继承,即子类只能有一个父类。
人们习惯地称子类与父类的关系是“is-a”关系。
如果子类和父类在同一个包中,那么,子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中不是private的方法作为自己的方法,继承的成员变量或方法的访问权限保持不变。
子类和父类不在同一个包中时,父类中的private 和友好访问权限的成员变量不会被子类继承,也就是说,子类只继承父类中的protected和public访问权限的成员变量作为子类的成员变量;同样,子类只继承父类中的protected和public访问权限的方法作为子类的方法。
子类声明的成员的变量的名字和从父类继承来的成员变量的名字相同时,将隐藏掉所继承的成员变量。
方法重写是指:子类中定义一个方法,这个方法的类型和父类的方法的类型一致或者是父类的方法的类型的子类型,并且这个方法的名字、参数个数、参数的类型和父类的方法完全相同。
子类如此定义的方法称作子类重写的方法。
子类继承的方法所操作的成员变量一定是被子类继承或隐藏的成员变量。
重写方法既可以操作继承的成员变量、调用继承的方法,也可以操作子类新声明的成员变量、调用新定义的其他方法,但无法操作被子类隐藏的成员变量和方法。
2 实验目的本实验的目的是让学生巩固下列知识点。
子类的继承性。
子类对象的创建过程。
成员变量的继承与隐藏。
方法的继承与重写。
3 实验要求编写程序模拟中国人、美国人是人,北京人是中国人。
除主类外,程序中还有4个类:People、ChinaPeople、AmericanPeople和BeijingPeople类。
要求如下。
People类有权限是protected的double型成员变量height和weight,以及public void speakHello()、public void averageHeight()和public void averageWeight()方法。
Java2实用教程(第5版)最新答案耿祥义第1章一、问答题1.James Gosling2.需3个步骤:用文本编辑器编写源文件。
使用javac编译源文件,得到字节码文件。
使用解释器运行程序。
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】。
(6条消息)Java2实用教程(第5版)耿祥义版习题五一、问答题1.子类可以有多个父类吗?2.ng包中的Object类是所有其他类的祖先类吗?3.如果子类和父类不在同一个包中,子类是否继承父类的友好成员?4.子类怎样隐藏继承的成员变量?5.子类重写方法的规则是怎样的?重写方法的目的是什么?6.父类的final方法可以被子类重写吗?7.什么类中可以有abstract方法?8.对象的上转型对象有怎样的特点?9.一个类的各个子类是怎样体现多态的?10.面向抽象编程的目的和核心是什么?二、选择题1.下列哪个叙述是正确的?1.子类继承父类的构造方法。
2.abstract类的子类必须是非abstract类。
3.子类继承的方法只能操作子类继承和隐藏的成员变量。
4.子类重写或新增的方法也能直接操作被子类隐藏的成员变量。
2.下列哪个叙述是正确的?1.final 类可以有子类。
2.abstract类中只可以有abstract方法。
3.abstract类中可以有非abstract方法,但该方法不可以用final 修饰。
4.不可以同时用final和abstract修饰同一个方法。
5.允许使用static修饰abstract方法。
3.下列程序中注释的哪两个代码(A,B,C,D)是错误的(无法通过编译)?class Father {private int money =12;float height;int seeMoney(){return money ; //A}}class Son extends Father {int height;int lookMoney() {int m = seeMoney(); //Breturn m;}}class E {public static void main(String args[]) {Son erzi = new Son();erzi.money = 300; //Cerzi.height = 1.78F; //D}}4.假设C是B的子类,B是A的子类,cat是C类的一个对象,bird是B类的一个对象,下列哪个叙述是错误的?1.cat instanceof B的值是true。
Java继承先说继承继承是面向对象最显著的一个特性。
继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。
比如可以先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
再说Java继承Java继承是面向对象的最显著的一个特征。
继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
类和类之间的继承关系可以用UML符号表示,其中父类又叫超类或基类,子类又叫派生类。
父类是子类的一般化,子类是父类的特化(具体化)。
JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,同时一个类可以实现多个接口,从而克服单继承的缺点。
在面向对象程序设计中运用继承原则,就是在每个由一般类和特殊类形成的一般——特殊结构中,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和操作一次性地在一般类中进行显式的定义,在特殊类中不再重复地定义一般类中已经定义的东西,但是在语义上,特殊类却自动地、隐含地拥有它的一般类(以及所有更上层的一般类)中定义的属性和操作。
特殊类的对象拥有其一般类的全部或部分属性与方法,称作特殊类对一般类的继承。
继承所表达的就是一种对象类之间的相交关系,它使得某类对象可以继承另外一类对象的数据成员和成员方法。
若类B继承类A,则属于B的对象便具有类A的全部或部分性质(数据属性)和功能(操作),我们称被继承的类A为基类、父类或超类,而称继承类B为A的派生类或子类。