第五章 类与继承作业一

合集下载

类的继承练习

类的继承练习

4.1 继承练习1-继承:1)定义一个父类person,该类包含2个属性(name,age),2个方法吃饭、睡觉;2)设计两个子类Student和Teacher2)让学生类继承Person类,老师类也继承Person。

4)编写测试类Test1,测试Student类和Teacher是否继承了Person类的成员。

定义父类Person,实现继承关系,代码如下:class Person {String name;int age;void eat() {System.out.println("吃饭 ");}void sleep() {System.out.println("睡觉");}}class Student extends Person {int sid; // 学号}class Teacher extends Person {int tid; // 工号void teach() {System.out.println("老师教课");}}2、定义测试类Test1,代码如下:public class Test1{public static void main(String[] args) {Student s = new Student();s.eat();s.sleep();System.out.println("----");Teacher t = new Teacher();t.eat();t.sleep();t.teach();}}运行结果如图4-1所示。

图4-1运行结果总结:1、在Java中,多个类可以继承一个父类,但是一个类不能直接继承多个类,一个类只能有一个直接父类。

2、父类是由子类不断抽取而来的,不断地抽取就形成了体系结构,这个结构称为继承体系结构。

3、子类在继承父类的时候,会自动拥有父类所有的成员。

4、继承的好处是划分了类的层次性,实现了代码重用、扩展了程序功能。

第五章 类的继承 教案

第五章 类的继承 教案
【辅导】【30分钟】
例5-1
例5-2
【课堂小结】【10分钟】
本节课主要学习内容是超类和子类,指定超类方法,掌握继承规则
【课后作业】课后题编程题1
【教后记】
课题
第五章类的继承
授课班级
2011计算机
2011网络
授课时间
2013年月日
授课时数
2
教学方法
讲授、练习
授课课次
18
教具
计算机、投影仪
授课类型
综合课
教学目标
知识目标
了解超类和子类,掌握指定超类方法,掌握继承规则
能力目标
通过本节学习,使学生掌握超类与子类的继承规则
情感目标
培养学生的自主学习能力,激发学生学习Java的热情
教学重点
超类和子类在同一个包中,与在不同包中的继承规则
教学难点
超类与子类在不同包中的继承规则
板书设计
5.1超类和子类
5.2继承规则
5.2.1超类和子类在同一个包中
5.2.2超类和子类不在同一个包中
教研室
审阅意见
年月日
教学过程
备注
【教学准备】【5分钟】
1、宣布上课2、点名;记录上课人数3、开机
【课程导入】【5分钟】
介绍本章学习目标,本节学习目标。本节在本章中地位,本节的知识要点。
【教学内容】【30分钟】
第五章类的继承
5.1超类和子类
继承别的类产生的新类称为子类或派生类,被继承的类称为超类
Java中所有的类都有超类
如果类的定义中没有指定超类,就默认该类的超类是Object
Java不支持多重继承,每个子类只能有一个超类
当超类和子类不在同一个包中时,子类继承超类时同样要求能够找到超类,因此超类必须有package语句,子类必须有import语句,超类还必须有public修饰符

C++第5章习题参考答案

C++第5章习题参考答案

1.什么是类的继承与派生?继承性是面向对象程序设计的第二个重要特性,通过继承实现了数据抽象基础上的代码重用。

继承是对许多问题中分层特性的一种自然描述,因而也是类的具体化和被重新利用的一种手段,它所表达的就是一种对象类之间的相交关系。

它使得某类对象可以继承另外一类对象的特征和能力。

继承所具有的作用有两个方面:一方面可以减少代码冗余;另一方面可以通过协调性来减少相互之间的接口和界面。

通过继承方式定义的子类也称为派生类。

2.类的三种继承方式之间的区别是什么?类的继承方式有public(公有)继承、protected(保护)继承和private(私有)继承三种。

对于不同的继承方式,会导致基类成员原来的访问属性在派生类中有所变化。

表5.1列出了不同继承方式下基类成员访问属性的变化情况。

表5.1 不同继承方式下基类成员的访问属性说明:该表第1列给出3种继承方式,第1行给出基类成员的3种访问属性。

其余单元格内容为基类成员在派生类中的访问属性。

从表中可以看出:(1) 基类的私有成员在派生类中均是不可访问的,它只能由基类的成员访问。

(2) 在公有继承方式下,基类中的公有成员和保护成员在派生类中的访问属性不变。

(3) 在保护继承方式下,基类中的公有成员和保护成员在派生类中均为保护的。

(4) 在私有继承方式下,基类中的公有成员和保护成员在派生类中均为私有的。

需要注意的是:保护成员与私有成员唯一的不同是当发生派生后,处在基类protected区的成员可被派生类直接访问,而私有成员在派生类中是不可访问的。

在同一类中私有成员和保护成员的用法完全一样。

3.派生类能否直接访问基类的私有成员?若否,应如何实现?派生类不能直接访问基类的私有成员。

具体实现方式:(1) 在类定义体中增加保护段为了便于派生类的访问,可以将基类私有成员中需提供给派生类访问的部分定义为保护段成员。

保护段成员可以被它的派生类访问,但是对于外界是隐藏起来的。

这样,既方便了派生类的访问,又禁止外界对它的派生类访问。

VC++第五章作业习题解答

VC++第五章作业习题解答

继承性是面向对象程序设计的第二个重要特性,通过继承实现了数据抽象基础上的代码重用。

继承是对许多问题中分层特性的一种自然描述,因而也是类的具体化和被重新利用的一种手段,它所表达的就是一种对象类之间的相交关系。

它使得某类对象可以继承另外一类对象的特征和能力。

继承所具有的作用有两个方面:一方面可以减少代码冗余;另一方面可以通过协调性来减少相互之间的接口和界面。

通过继承方式定义的子类也称为派生类。

5-2注意:(1)基类的私有成员在派生类中均是不可访问的,它只能由基类的成员访问。

(2)在公有继承方式下,基类中的公有成员和保护成员在派生类中的访问属性不变。

(3)在保护继承方式下,基类中的公有成员和保护成员在派生类中均为保护的。

(4)在私有继承方式下,基类中的公有成员和保护成员在派生类中均为私有的。

(5)保护成员与私有成员唯一的不同是当发生派生后,处在基类protected区的成员可被派生类直接访问,而私有成员在派生类中是不可访问的。

在同一类中私有成员和保护成员的用法完全一样。

5-3派生类不能直接访问基类的私有成员。

具体的实现方式有:(1)在类定义体中增加保护段为了便于派生类的访问,可以将基类私有成员中需提供给派生类访问的部分定义为保护段成员。

保护段成员可以被它的派生类访问,但是对于外界是隐藏起来的。

这样,既方便了派生类的访问,又禁止外界对它的派生类访问。

这种方式的缺点是在公有派生的情况下,如果把成员设为保护访问控制,则为外界访问基类的保护段成员提供了机会,而这三种派生方式,我们经常使用的是公有派生。

(2)将需访问基类私有成员的派生类成员函数声明为基类的友元这样派生类中的其他成员函数均无权访问它,外界不可能通过派生新类来达到访问基类私有成员的目的。

5-4构造函数的执行顺序:先祖先(基类)、再客人(对象成员),后自己(派生类本身)。

析构函数的执行顺序和构造函数正好严格相反:先自己(派生类本身),再客人(对象成员),后祖先(基类)。

自考Java语言程序设计(一)第五章以后课后习题及答案

自考Java语言程序设计(一)第五章以后课后习题及答案
{
m_dRealPart = d;
}
void setImaginaryPart(double d)
{
m_dImaginPart = d;
}
//复数运算方法
ComplexNumber complexAdd(ComplexNumber c)
{
return new ComplexNumber(
this.m_dRealPart + c.getRealPart(),
{
suhData=new Data;
}
intgetData()
{
return subData;
}
}
3.“子类的域和方法的数目一定大于等于父类的域和方法的数目”,这种说法是否正确?为什么?
4.在Java程序中,通过类的定义只能实现单重继承()
5.下列哪些说法是正确的?
A、Java语言只允许单一继承
B、Java语言只允许实现一个接口
·m_dlmaginPart虚部,代表复数的虚数部分。
(2)复数类ComplexNumber的方法
·ComplexNumber()构造方法,将实部、虚部都置为0。
·ComplexNumber(doubler,doublei)构造方法,创建复数对象的同时完成复数的实部、虚部的初始化;r为实部的初值,i为虚部的初值。
A.两个或两个以上的方法取相同的方法名,但形参的个数或类型不同考试大论坛
B.两个以上的方法取相同的名字和具有相同的参数个数,但形参的类型可以不同
C.两个以上的方法名字不同,但形参的个数或类型相同
D.两个以上的方法取相同的方法名,并且方法的返回类型相同
3.什么是方法的覆盖?方法的覆盖与域的隐藏有何不同?与方法的重载有何不同?

第五章 习题答案

第五章 习题答案

答案:一、单项选择题1.C 2.D 3.A 4.D 5.C6.B 7.A 8.B 9.A 10.D 二、简答题1.面向对象编程的三大特征:封装、继承和多态。

封装:通过设置访问权限等方式封装了内部实现细节,使用者只需要知道外部接口。

继承:子类可以继承父类的成员,又可以新增自己独有的成员,还可以覆盖父类的成员。

多态:同名方法可以具有不同的行为,Java中有两种意义的多态:重载和重写。

2.万物皆是对象,对象都有属性和行为。

属性是对象所拥有的状态、数据,是静态的特征;行为是对象所拥有的功能、对数据的操作,是动态的特征,可能会影响到属性。

类封装了一类对象共有的属性和行为,是对具有相同属性和行为的对象的抽象。

类是创建对象的模板,对象是类的具体实例。

3.(1)定义在类体内、方法外的变量称为成员变量。

定义在方法体内部的变量,以及方法的形式参数,是方法所临时使用的变量,称为局部变量。

(2)成员变量在整个类体中都有效。

而局部变量的有效范围仅限于定义它的方法体内,具体说明如下:①方法的形式参数:在整个方法体内有效;②方法体内独立定义的变量:在方法体中该变量定义之后的语句中有效;③选择、循环等语句块内定义的变量:只在语句块的{ }内有效。

(3)如果定义的成员变量没赋值,则系统为其提供缺省的初始值。

所以成员变量定义后就有了确定的值,就可以使用。

而方法的局部变量必须自行定义而且赋值后才能使用。

(4)类成员变量在程序加载进内存时即开辟空间,实例成员变量在创建对象时开辟空间。

局部变量只在方法调用时开辟空间,方法执行完毕后空间随即释放。

4.多个方法名字相同,但参数个数或者类型不同,称为方法重载。

方法返回值的类型和参数的名字不参与比较,方法重载是多态的一种体现。

当调用方法时,根据传入的实参个数和类型,可以区分出调用的是哪一个方法。

5.构造方法与所在类的类名完全相同,构造方法没有返回值类型,也不用void修饰。

构造方法可以重载,一个类中可以定义多个构造方法。

8.继承作业(1)

8.继承作业(1)

继承作业一、选择题1. 以下关于继承条件下构造方法执行过程的代码的执行结果是(a )。

(选择一项)class Person {public Person() {System.out.println("execute Person()");}}class Student extends Person {public Student() {System.out.println("execute Student() ");}}class PostGraduate extends Student {public PostGraduate() {System.out.println("execute PostGraduate()");}}publicclass TestInherit {publicstaticvoid main(String[] args) {new PostGraduate();}}//知识点:子类实例化过程,需要知道父类是怎么进行实例化。

A. execute Person()execute Student()execute PostGraduate()B. execute PostGraduate()C. execute PostGraduate()execute Student()execute Person()D. 没有结果输出2. 以下关于this和super关键字的说法错误的是(bd )。

(选择二项)A. this关键字指向当前对象自身,super关键字指向当前对象的直接父类B. 在main方法中可以存在this或super关键字,但不能同时存在。

C. this和super关键字都可以访问成员属性,成员方法和构造方法D. 在一个类的构造方法中可以同时使用this和super来调用其他构造方法3. 给出下面的代码段,在代码说明//assignment x=a,y=b处写入如下( d )个代码是正确的。

C++第五章_类与对象习题解答

C++第五章_类与对象习题解答

第五章类与对象习题一.基本概念与基础知识自测题5.1 填空题5.1.1 引入类定义的关键字是(1)。

类的成员函数通常指定为(2),类的数据成员通常指定为(3)。

指定为(4)的类成员可以在类对象所在域中的任何位置访问它们。

通常用类的(5)成员表示类的属性,用类的(6)成员表示类的操作。

答案:(1)class(2)公有的public(3)私有的private(4)公有的public(5)数据(6)函数5.1.2 类的访问限定符包括(1)、(2)和(3)。

私有数据通常由(4)函数来访问(读和写)。

这些函数统称为(5)。

答案:(1)public(公有的)(2)private(私有的)(3)protected(保护的)(4)公有的成员函数(5)类的接口5.1.3 通常在逻辑上,同一类的每个对象都有(1)代码区,用以存储成员函数。

而在物理上通常只有(2)代码区。

只有在(3)定义,并(4)的函数和加了关键字(5)的函数例外。

答案:(1)独立的(2)共用的(3)在类说明中(4)不包括循环等复杂结构(5)inline5.1.4 C++中支持三种域:(1)、(2)、(3)。

函数域被包括在(4)中,全局域被包括在(5)中。

using指示符以关键字using开头,后面是关键字(6),最后是(7)。

这样表示以后在该名字空间中所有成员都(8)。

如不使用using指示符则在使用时要加::,称为(9)运算符。

答案:(1)局部域(local scope)(2)名字空间域(namespace scope)(3)类域(class scope)(4)局部域(5)名字空间域(6)namespace(7)名字空间名(8)可以直接被使用(9)域5.1.5 引用通常用作函数的(1)和(2)。

对数组只能引用(3)不能引用(4)。

答案:(1)参数(2)返回值(3)数组元素(4)数组名本身5.1.6 构造函数的任务是(1)和(2)。

构造函数无(3),但并不表示(4)。

第五章作业答案

第五章作业答案
double GetLength();
};
Line::Line(Point p1,Point p2):A(p1),B(p2){};
double Line::GetLength(){
double Len;
Len=(A.GetX()-B.GetX())*(A.GetX()-B.GetX())+(A.GetY()-B.GetY())*(A.GetY()-B.GetY());
Point(Point &p);
double GetX();
double GetY();
};
class Line
{
private:
Point A,B;//定义两个Point类的对象成员
double length;
public:
Line(Point p1,Point p2); //Line类的构造函数原型,函数体类外实现
(2)对于私有继承和保护继承,基类中所有成员都不能被“派生类对象”访问。
三、读程序按要求作答
1、运行下列程序,分析并写出创建obj对象时构造函数的执行步骤,解释输出结果中的Constructing A ,n=5是执行到哪个构造函数时输出的?
#include<iostream>
#include<cmath>
void f2();
int j;
private:
int k;
};
class B:public A
{
public:
void f3();
protected:
int m;
private:
int n;
};
class C:public B
{

第5章 类的派生与继承

第5章 类的派生与继承

第5章 类的派生与继承
class BaseClass //基类 {
int vl,v2; }; class DerivedClass : public BaseClass //派生类 {
int v3; };
第5章 类的派生与继承
二、派生类的定义与大小 1、派生类的定义 从基类派生派生类的一般格式: class派生类名:继承方式说明符 基类名 {
编程小技巧:同学们可以将鼠标放置于类中的任何一个成 员或者函数上,编程软件会提示,对应的访问权限,这个方法在 继承编程中特别好用。
第5章 类的派生与继承
我们几乎不使用 protected 或 private 继承,通常使用 public 继承。当使用不同类型的继承时,遵循以下几个规则: 公有继承(public):当一个类派生自公有基类时,基类的公
第5章 类的派生与继承
C++程序设计
第5章 类的派生和继承
第5章 类的派生与继承
本章内容
类的继承与类的派生 访问控制 派生类的构造函数和析构函数 类之间的关系 多层次派生 基类与派生类指针的相互转换
第5章 类的派生与继承
第一节 类的继承与类的派生
常考知识点: 继承派生基本概念 继承派生在C++中起到的作用 派生类定义的方法 派生类从基类继承的元素有哪些 继承关系中友元和静态成员变量的派生特点 单继承、多重继承的概念以及异同 派生的层次
第5章 类的派生与继承
1、继承:在一个已存在的类的基础上建立一个新的类,称 为继承
2、派生:从已有的类(父类)产生一个新的子类,称为类的 派生
3、单继承:一个派生类只从一个基类派生,这称为单继承 4、多继承:一个派生类有两个或多个基类的称为多重继承

java课后习题答案

java课后习题答案

java课后习题答案java课本课后习题答案第五章继承、接口与泛型1、子类在什么情况下可以继承父类的友好成员?答:父子类在同一包中时子类可以继承父类的友好成员。

2、子类通过什么办法,可以隐藏继承的成员变量。

答:子类成员变量与父类成员变量同名。

3、子类重写继承方法的规则是什么?答:重写隐藏父类的方法需:返回的数据类型相同,参数的个数相同,并且类型相同。

如果重写父类的方法后参数的个数或类型不同会出现子类方法的重载。

4.子类的构造方法的第一条语句是什么?答:如果需要调用父类构造方法,则应是用super关键词调用父类的构造方法。

5、子类一旦重写了继承的方法,就会隐藏继承的方法。

是这样吗?答:不一定。

在参数的个数或类型不同时会产生重载。

如果只有返回值的类型不同,将会产生编译错误。

(5)子类隐藏父类的方法,参数必须______相同并且__________相同.答:个数,类型6、子类重写继承方法时,可以降低方法的权限吗?答:重写继承方法时不能降低访问权限。

7、简述关键字super的用法。

答:1)子类调用父类的构造方法。

2)子类对象引用被隐藏了的父类方法,或成员变量。

8.假设父类有一个方法:Public double f(double x, double y){return x+y;}是否允许子类再声明如下的方法:Public float f(double x, double y){return 23;}答:不允许。

9、父类的final方法可以被子类重写吗?答:不可以10、什么类中可以有abstract方法?答:被abstract修饰的类。

接口中也可以有abstract方法11、什么叫做对象的上转型对象?答:用子类的构造方法构造出来的对象,赋值给父类对象。

12、什么叫接口回调?答:用实现接口的类创建的对象,赋值给该接口声明的接口变量。

13、与类有关的匿名类一定是该类的子类吗?与接口有关的匿名类一定是实现该接口的一个类吗?答:一定,因为类创建对象时,除了构造方法还有类体,此类体被认为是该类的一个子类去掉类声明后的类体。

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

Java 2实用教程第5版_第5章_子类与继承
1.上转型对象不能操作子类新增的成员变量;不能调用子类新 增的方法。
2.上转型对象可以访问子类继承或隐藏的成员变量,也可以调 用子类继承的方法或子类重写的实例方法。
3. 如果子类重写了父类的某个实例方法后,当用上转型对象调 用这个实例方法时一定是调用了子类重写的实例方法。 例子10 中, monkey 是 People 类型对象的上转 型对象,运行效 果如图5.10。
§5.1 子类与父类
➢ 继承是一种由已有的类创建新类的机制。利用继承, 我们可以先创建一个共有属性的一般类,根据该一般 类再创建具有特殊属性的新类,新类继承一般类的状 态和行为,并根据需要增加它自己的新的状态和行为。 由继承而得到的类称为子类,被继承的类称为父类 (超类)。
➢ Java不支持多重继承(子类只能有一个父类)。
➢ 子类可以通过继承的方法来操作子类未继承的变量和方法 .
例 子 2中 , 子 类 ChinaPeople的 对象调用继承的方法操作未被子类 继承却分配了内存空间的变量。程 序运行效果如图5.3。
5.3.1 子类对象的生成
class AA{
AA(){
System.out.println("上层父类A的构造方法");
例题
4.重写的注意事项
➢ 重写父类的方法时,不允许降低方法的访问权限,但可以提高 访问权限(访问限制修饰符按访问权限从高到低的排列顺序是: public、protected、友好的、private。)
在下面的例子4(Example5_4.java)中,ImportantUniversity是 University类的子类,子类重写了父类的enterRule()方法,运行效 果如图5.5。
5.3.2 关于instanceof运算符

自学考试Java语言程序的设计(一)第五章以后课后习题与答案

自学考试Java语言程序的设计(一)第五章以后课后习题与答案

自考Java语言程序设计(一)第五课后习题及答案自考Java语言程序设计(一)第五章类的继承课后习题五、类的继承l.什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来什么好处?什么是单重继承?什么是多重继承?2.观察下面的程序片断,指出其中的父类和子类,以及父类和子类的各个域和方法。

class SuperClass{int data;voidsetData(intnewData){data=newData~}intgetData(){return data~}}class SubClass extends SuperClass{int suhData;void setSubData(intnewData){suhData=new Data;}intgetData(){return subData;}}3.“子类的域和方法的数目一定大于等于父类的域和方法的数目”,这种说法是否正确?为什么?4. 在Java程序中,通过类的定义只能实现单重继承()5.下列哪些说法是正确的?A、 Java 语言只允许单一继承B、 Java 语言只允许实现一个接口C、 Java 语言不允许同时继承一个类并实现一个接口D、 Java 语言的单一继承使得代码更加可靠6.Java中所有类都是类________的子类。

7. 请写出下面程序的运行结果。

public class Test extends TT{public void main(String args[]){Test t = new Test("Tom");}public Test(String s){super(s);System.out.println("How do you do?");}public Test(){this("I am Tom");}} .Eclass TT{public TT(){System.out.println("What a pleasure!");}public TT(String s){this();System.out.println("I am "+s);}}结果:________8.父类的成员在子类中的访问权限由决定。

类与继承练习题

类与继承练习题

题〇:【考察基本类的定义和使用】编写一个矩形类,具有长(len)宽(wid)两个字段,默认构造函数为len和wid设置默认值,均为0,有参数构造函数根据传入参数的值为len和wid设置具体值。

此外类包含以下几个方法:取长度、取宽度、计算周长、计算面积、修改矩形的长度、修改矩形的宽度等方法。

public class Rectangle{private double width;private double length;public double Width{get{return this.width;}set{this.width = value;}}public double Length{get{return this.length;}set{this.length = value;}}public Rectangle(){Length = 0;Width = 0;}public Rectangle(double length, doublewidth){Length = length;Width = width;}public double Acreage(){return Width * Length;}public double Perimeter(){return 2*(Width+Length);}}题一:【考察静态方法、静态字段的意义和使用方式】设计一个男女人数统计程序。

定义一个Person类,包含姓名、性别、年龄三个私有字段。

另包含males和females两个私有静态字段成员,用来记录男、女学生的人数;还有NumberMales和NumberFemales两个公有静态方法成员,这两个方法通过对静态字段males、females的访问返回男生总人数、女生总人数。

设计其构造函数,要求完成每个Person 对象的赋值和男女总人数的累加。

【答案】using System;namespace Exp0202{public enum Gender {男, 女};public class Person{//私有静态字段,分别统计男女人数private static int males;private static int females;//公有字段,描述个人信息public string Name;public Gender Sex;public int Age;//构造函数,用来初始化对象public Person (string name, Gender sex, int age){Name = name;Sex = sex;Age = age;if (sex == Gender.男)males++; //男生人数加1if (sex == Gender.女)females++; //女生人数加1}//返回男生人数public static int NumberMales(){return males;}//返回女生人数public static int NumberFemales(){Return females;}} //class Person结束class Program{static void Main (String[ ] args){//创建Person型的数组对象,用来记录6个人的信息Person[ ] ps = new Person [6];ps[0] = new Person (“李伟峰”, Gender.男, 20);ps[1] = new Person (“郭小雨”, Gender.女, 19);ps[2] = new Person (“赵荣”, Gender.男, 22);ps[3] = new Person (“刘恒”, Gender.男, 21);ps[4] = new Person (“陈晶晶”, Gender.女, 21);ps[5] = new Person (“张馨”, Gender.女, 20);int NumOfMales = Person.NumberMales();int NumOfFemales = Person.NumberFemales();Console.WriteLine(“男生人数: {0}”,NumOfMales);Console.WriteLine(“女生人数: {0}”,NumOfFemales);Console.WriteLine(“学生名单如下: ”);foreach (Person p in ps){Console.Write(“{0}\t”, );}Console.Write(‘\n’);Console.ReadLine();}}}题二:【考察具有继承和派生的程序的编写基本形式、乘除法应用加减法的实现逻辑】编写一个程序,包含两个类,分别用于提供两个整数的加减运算和乘除运算功能,要求具有乘除运算功能的类派生自具有加减运算功能的类,且乘法和除法的实现都不可以使用C#的自有运算符“*”和“\”。

8.继承作业(1)

8.继承作业(1)

继承作业一、选择题1. 以下关于继承条件下构造方法执行过程的代码的执行结果是(a )。

(选择一项)class Person {public Person() {System.out.println("execute Person()");}}class Student extends Person {public Student() {System.out.println("execute Student() ");}}class PostGraduate extends Student {public PostGraduate() {System.out.println("execute PostGraduate()");}}publicclass TestInherit {publicstaticvoid main(String[] args) {new PostGraduate();}}//知识点:子类实例化过程,需要知道父类是怎么进行实例化。

A. execute Person()execute Student()execute PostGraduate()B. execute PostGraduate()C. execute PostGraduate()execute Student()execute Person()D. 没有结果输出2. 以下关于this和super关键字的说法错误的是(bd )。

(选择二项)A. this关键字指向当前对象自身,super关键字指向当前对象的直接父类B. 在main方法中可以存在this或super关键字,但不能同时存在。

C. this和super关键字都可以访问成员属性,成员方法和构造方法D. 在一个类的构造方法中可以同时使用this和super来调用其他构造方法3. 给出下面的代码段,在代码说明//assignment x=a,y=b处写入如下( d )个代码是正确的。

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

第五章类与继承作业一
一、填空选择题
1、(在同一包中)子类不能继承父类中的私有成员,除此之外,其它所有的成员都可以通过继承变为子类的成员。

2、给出如下的程序,A-E选项中与构造方法ConstOver重载的两个构造方法是:AC。

.public class ConstOver {
publicConstOver (int x, int y, int z) { }
}
A.ConstOver ( ) { }
B.ProtectedintConstOver ( ) { }
C.PrivateConstOver (int z, int y, byte x) { }
D.public Object ConstOver (int x, int y, int z) { }
E.public void ConstOver (byte x, byte y, byte z) { }
3、已知类关系如下:
class Employee;
class Manager extends Employeer;
class Director extends Employee;
则以下关于数据的语句正确的是:(A)。

A. Employee e=new Manager();
B. Director d=new Manager();
C. Director d=new Employee();
D. Manager m=new Director();
4、(A)下面对类的申明哪个是正确的?
A)public class Fred {
publicint x = 0;
public Fred (int x) {
this.x = x;
}
}
B)public class fred
publicint x = 0;
publicfred (int x) {
this.x = x;
}
}
C)public class Fred extends MyBaseClass, MyOtherBaseClass {
publicint x = 0;
public Fred (intxval) {
x = xval;
}
}
D)protected class Fred {
privateint x = 0;
private Fred (intxval) {
x = xval;
}
5、(B)下面程序中类ClassDemo中定义了一个静态变量sum,分析程序段的输出结果。

classClassDemo {
public static int sum=1;
publicClassDemo()
{sum=sum+5;}
}
classClassDemoTest{
public static void main(String args[]) {
ClassDemo demo1=new ClassDemo();
ClassDemo demo2=new ClassDemo();
System.out.println(demo1.sum);
}
}
A) 0 B) 6 C) 11 D) 2
二、编程题
1、编写1个Light类,该类是对灯的描述,该类拥有:
(1)2个成员变量
watts(私有,整型);//用于存放灯的瓦数;
indicator(私有,布尔类型);//用于存放灯的开或关的状态
(2)2构造器方法
Light(int watts) //用于创建具有watts瓦的对象
Light(intwatts,boolean indicator) //用于创建具有watts瓦,开关状态为indicator的对象
(3)3成员方法
public void switchOn() //开灯,即将灯的状态置为开
public voidswitchOff() //关灯
public void printInfo() //输出灯的瓦数信息和开关状态
2、编写1个TubeLight类,该类是对管状灯的描述,它继承于Light类。

还拥有:
(1)2个成员变量
tubeLength(私有,整型) //用于存放灯管的长度
color(私有,String类型) //用于存放灯光的颜色
(2)构造器方法
TubeLight(int watts, inttubeLength,String color) //用于创建具有watts 瓦,灯管长度为tugeLength,颜色为color的对象
(3)成员方法
public void printInfo() //打印输出灯的相关信息,包括瓦数、开关信息、长度以及颜色
3、请写一个测试程序,要求:
(1)创建一个管状灯的实例对象,该灯瓦数为:32;长度为50;白色灯光,状态为开。

(2)打印输出该灯的相关信息。

public class Light{
privateint watts=0;
privateboolean indicator=false;
public Light(int watts){
this.watts=watts;
}
public Light(intwatts,Boolean indicator){
this.watts=watts;
dicator=indicator;
}
public void switchOn(){
dicator=true;
}
public void switchOff(){
dicator=false;
}
public void printInfo() {
intln("watts:" + this.watts);
intln("indicator:" + dicator);
} }
public classTubeLight{
privateinttubeLength=0;
private String color=””;
public TubeLight(int watts, inttubeLength,String color){ super(watts);
this.tubeLength=tubelength;
lor=color;
}
public void printInfo() {
intInfo();
intln("tubeLength:" + this.tubeLength);
intln("color:" + lor);
} }
public class test {
/**
* @paramargs
*/
public static void main(String[] args) {
// TEST
TubeLighttubeLight = new TubeLight(32, 50, "white");
tubeLight.switchOn();
intInfo();}。

相关文档
最新文档