继承和接口设计习题
- 格式:doc
- 大小:83.00 KB
- 文档页数:13
1.写出程序的运行结果//扩展Point类public class Point{protected int x,y;public Point(int x, int y){this.x=x;this.y=y;}public boolean equals(Point p){return (x==p.x && y=p.y);}public int getX(){return x;}public int getY(){return y;}public string toString(){return new}}public class NamedPoint extends Point{final private String name;public NamedPoint(int x, int y, String name){super(x,y);=name;}public String getName(){return name;}public String toString(){return new String(name+"("+x+", "+y+")");}}public class TestNamedPoint{public static void main(String[] a){NamedPoint p=new NamedPoint(2,-3,"p");System.out.println("p:"+p);System.out.println("p.getName():"+p.getName());System.out.println("p.getX():"+p.getX());NamedPoint q=new NamedPoint(2,-3,"Q");System.out.println("q: "+q);System.out.println("q.equals(p):"+q.equals(p));}}2.//写出程序运行结果class ClassX{protected int m;protected int n;void f(){System.out.println("Now in ClassX.f().");m=22;}void g(){System.out.println("Now in ClassX.g().");n=44;}public String toString(){return new String("{ m="+m+", n="+n+"}");}}class ClassY extends ClassX{private double n;void g(){System.out.println("Now in ClassY.g().");n=3.14159265;}public String toString(){return new String("{ m="+m+", n="+n+"}");}}class TestClassY{public static void main(String[] a){ClassX x=new ClassX();x.f();x.g();System.out.println("x="+x);ClassY y=new ClassY();y.f();y.g();System.out.println("y= "+y);}}3.有接口Speaker包含一个方法speak(),实现以下分层结构:4. 有接口Geometric ,有3个方法getArea(), getCircumference(),getX()和getY()。
⼀、单选题(共 60.00 分)⼆、判断题(共 40.00 分)Java 程序设计(深圳⼤学继续教育学院引进课程) 测验-4.1继承概念1. A.B.C.D.下列关于继承的哪项叙述是正确的_______。
在java 中允许多重继承在java 中⼀个类只能实现⼀个接⼝在java 中⼀个类不能同时继承⼀个类和实现⼀个接⼝java 的单⼀继承使代码更可靠正确答案:D2. A.B.C.D.给出下⾯代码: 1) class Parent { 2) private String name ; 3) public Parent (){} 4) } 5) public class Child extends Parent { 6) private String department ; 7) public Child () {} 8) public String getValue (){ return name ; } 9) public static void main (String arg[]) { 10) Parent p = new Parent (); 11) } 12) } 那些⾏将引起错误?第3⾏第6⾏第7⾏第8⾏正确答案:D3. A.B.C.D.设有下⾯两个类的定义:class Person {class Student extends Person{long id ; // 身份证号int score ; //⼊学总分String name ; // 姓名int getScore () { return score ; } }} 问:类Person 和类Student 的关系是( )。
包含关系继承关系(内部类继承了外部类)关联关系⽆关系,上述类定义有语法错误正确答案:B1构造⽅法不能被继承1.A.B.正确错误正确答案:A2. A.B.⼀个⼦类可以重新定义从⽗类那⾥继承来的同名⽅法,⽽且允许它们有不同的返回值类型。
一.单选题1.JAVA语言的类间的继承关系是()。
A多重的B.单重的C.线程的D.不能继承2.以下关于JAVA语言继承的说法正确的是()。
A.Java中的类可以有多个直接父类B.抽象类中不能有子类C.JAVA中的接口支持多继承D.最终类可以作为其他类的父类3.下列选项中,用于定义接口的关键字是()。
A)interface B)implements C)abstract D)class4.下列选项中,用于实现接口的关键字是()。
A)interface B)implements C)abstract D)class5.以下哪个接口的定义是正确的?A)interface B{void print() { } ;}B)abstract interface B { void print() ; }C)abstract interface B extends A1,A2 { abstract void print(){ };D)interface B { void print();}6.定义一个接口时,下列哪个关键字用不到?A)public B)extends C)interface D)class7.在使用interface声明一个接口时,只可以使用哪个修饰符修饰该接口。
A)private B)protected C)private或者protected D)public8.下列类头定义中,错误的是?A)public x extends yB)public class x extends yC)class x extends y implements y1D)class x9.下列叙述正确的是?A)Java中允许多重继承B)Java一个类只能实现一个接口C)Java中只能单重继承D)Java中一个类可以继承多个抽象类10.现有类A和接口B,以下描述中表示类A实现接口B的语句是()。
A.class A implements BB.class B implements AC.class A extends BD.class B extends A二.填空题1.接口中的所有属性均为__public____、___static___和__final_。
JAVA复习习题(继承)类的继承习题一、选择题1. Java语言的类间的继承关系是( B )。
A) 多重的B) 单重的C) 线程的D) 不能继承2. 以下关于Java语言继承的说法正确的是( C )。
A)Java中的类可以有多个直接父类B)抽象类不能有子类C)Java中的接口支持多继承D)最终类可以作为其它类的父类3. 现有两个类A、B,以下描述中表示B继承自A的是(D)。
A) class A extends B B) class B implements AC) class A implements B D) class B extends A4. 下列选项中,用于定义接口的关键字是( A)。
A)interface B) implements C) abstract D) class5. 下列选项中,用于实现接口的关键字是( B)。
A)interface B) implements C) abstract D) class6. Java语言的类间的继承的关键字是( B )。
A) implements B) extends C) class D) public7. 以下关于Java语言继承的说法错误的是( A )。
A)Java中的类可以有多个直接父类B)抽象类可以有子类C)Java中的接口支持多继承D)最终类不可以作为其它类的父类8. 现有两个类M、N,以下描述中表示N继承自M的是(D)。
A) class M extends N B) class N implements MC) class M implements N D) class N extends M9. 现有类A和接口B,以下描述中表示类A实现接口B的语句是(A)。
A) class Aimplements B B) class B implements AC) class Aextends B D) class B extends A10. 下列选项中,定义抽象类的关键字是( C)。
/********以下作业在代码编写过程中要按照注释规范对 类,方法,属性,局部变量 进行注释关键代码片段也需要进行注释说明 ********/1、根据如下图示,使用继承编写出对应的程序。
然后分别创建对应的车辆,调用方法输出 车辆信息,并测试每辆车包含的其他方法。
尽量让你的程序变得有意思一些(属性和方 法可添加和扩展)。
所属公司最大载客数量I打发票2、3、请编码实现动物世界的继承关系:动物(Animal )具有行为:吃(eat )、睡觉(sleep ) 动物包括:兔子(Rabbit ),老虎(Tiger ) 这些动物吃的行为各不相同(兔子吃草,老虎吃肉);但睡觉的行为是一致的。
请通过继承实现以上需求,并编写测试类 AnimalTest 进行测试 4、请使用接口编码实现如下需求:乐器(Instrument )分为:钢琴(Piano )、小提琴(Violin ) 各种乐器的弹奏(play )方法各不相同。
编写一个测试类 InstrumentTest ,要求:编写方法testPlay ,对各种乐器进行弹奏测试。
要依据乐器的不同,进行相应的弹奏。
在main 方法中创建不同的乐器对象,通过testPlay 的弹奏测试方法进行测试。
5、 定义Fight 接口,其中有一个打人的动作(fight )。
让胖人(FatFat )和瘦人(Thi nth in )分别实现打人接口,但具有不同的打人结果: 胖人打人疼,瘦人打人不疼。
编写测试类,使用多态的方式对不同人打人的动作进行测试,输出胖人和瘦人打人的动作。
6、 7、8、 医生(Doctor )有姓名(name )、编号(idNumber )和地址(address )等基本信息, 还都具有量体温 (temperature )和开药(giveMedicine )的方法。
巴士是汽车吗? 卡车是汽车吗? 出租车是汽车吗?引擎数量 外观颜色 品牌 车牌 刹车 加速属性,行为请问:出租车 包含哪些属性 和行为呢? 最大载客数量报站 让座提示最大载重量 卸货汽车医生又分为普通医生和主治医生。
抽象类与接⼝练习【练习题】1.抽象类与继承设计⼀个能细分为矩形、三⾓形、圆形和椭圆形的“图形”类。
使⽤继承将这些图形分类,找出能作为基类部分的共同特征(如校准点)和⽅法(如画法、初始化),并看看这些图形是否能进⼀步划分为⼦类。
本题只考虑实现思想,不考虑具体实现的细节,实现⽅式可⾃由发挥。
【练习题】2.抽象类:创建⼀个Vehicle类并将它声明为抽象类。
在Vehicle类中声明⼀个NoOfWheels⽅法,使它返回⼀个字符串值。
创建两个类Car和Motorbike 从Vehicle类继承,并在这两个类中实现NoOfWheels⽅法。
在Car类中,应当显⽰“四轮车”信息;⽽在Motorbike类中,应当显⽰“双轮车”信息。
创建另⼀个带main⽅法的类,在该类中创建Car和Motorbike的实例,并在控制台中显⽰消息。
【练习题】3.接⼝:创建⼀个名称为Vehicle的接⼝,在接⼝中添加两个带有⼀个参数的⽅法start()和stop()。
在两个名称分别为Bike和Bus的类中实现Vehicle接⼝。
创建⼀个名称为interfaceDemo的类,在interfaceDemo的main()⽅法中创建Bike和Bus对象,并访问start()和stop()⽅法。
【练习题】4.接⼝:创建⼀个名称为Vehicle的接⼝,在接⼝中添加两个带有⼀个参数的⽅法start()和stop()。
在两个名称分别为Bike和Bus的类中实现Vehicle接⼝。
创建⼀个名称为interfaceDemo的类,在interfaceDemo的main()⽅法中创建Bike和Bus对象,并访问start()和stop()⽅法。
【练习题】5.抽象类、继承、接⼝综合设计⼀个系统:XXX门的实现过程:流程:设计⼀张抽象的门Door,那么对于这张门来说,就应该拥有所有门的共性,开门openDoor()和关门closeDoor();然后对门进⾏另外的功能设计,防盗--theftproof()、防⽔--waterproof()、防弹--bulletproof()、防⽕、防锈…… 要求:利⽤继承、抽象类、接⼝的知识设计该门【练习题】6.抽象类、继承、接⼝综合设计⼀个系统:xxx纯净⽔⽣产线⽬前流程是:从某个地⽅把⽔取出来,然后经过缓冲,过滤,加热和放糖的步骤 abstract ⽔{public void ⽔();}interface 过滤{}interface 缓冲{}interface 加热{}interface 放糖{}class 纯净⽔1 extends ⽔ imps 过滤,缓冲{}class 纯净⽔2 extends ⽔ imps 缓冲{}class 纯净⽔2 extends ⽔ imps 过滤{}。
继承练习题一、选择题1. 关于Java中的继承说法正确的是:A. 子类可以继承父类的私有成员B. 子类可以继承父类的protected成员C. 子类可以继承父类的静态成员D. 子类不能继承父类的构造方法2. 在Java中,下列哪个关键字用于声明继承?A. extendsB. implementsC. interfaceD. class3. 如果一个类声明为final,那么它:A. 可以被继承B. 不能被继承C. 可以被实例化D. 不能被实例化4. 关于Java中的方法重写,下列说法正确的是:A. 重写的方法必须具有相同的返回类型B. 重写的方法可以有不同的访问权限C. 重写的方法可以抛出新的异常D. 重写的方法必须抛出与父类方法相同的异常5. 在Java中,下列哪个操作是不合法的?A. 子类覆盖父类的静态方法B. 子类覆盖父类的非静态方法C. 子类覆盖父类的私有方法D. 子类覆盖父类的protected方法二、填空题6. 在Java中,如果一个类没有明确指定继承哪个类,那么它默认继承______类。
7. 在Java中,使用______关键字可以实现对父类方法的重写。
8. 如果子类要调用父类的构造方法,可以使用______关键字。
9. 在Java中,子类可以______父类的成员变量和方法。
10. 在Java中,如果子类和父类都有相同的成员变量,那么在子类中访问这个变量时,默认访问的是______。
三、判断题11. 在Java中,一个类只能继承一个类,但可以实现多个接口。
()12. 子类可以继承父类的私有成员变量,但不能继承私有方法。
()13. 在Java中,子类必须显式调用父类的构造方法。
()14. 如果父类的构造方法有参数,那么子类的构造方法也必须有相同参数的构造方法。
()15. 在Java中,子类可以覆盖父类的静态方法。
()四、编程题16. 定义一个父类`Animal`,包含一个方法`makeSound()`。
1.在Java中,子类可以继承父类的哪些特性?
答:子类可以继承父类的所有非私有属性和方法,包括公有、受保护和默认访问级别。
此外,子类还可以继承父类的构造函数和初始化块。
2.如果一个子类要继承父类的方法,应该如何实现?
答:子类要继承父类的方法,可以使用与父类方法同名、相同参数列表和相同返回类型的方法。
如果子类想要重写父类的方法,可以使用@Override注解来标记。
3.什么是多态性?在Java中如何实现多态性?
答:多态性是指一个接口可以有多种实现方式,或者一个对象可以有多种形态。
在Java中,多态性可以通过继承和接口实现。
子类可以继承父类的属性和方法,也可以实现接口的规范,从而让一个对象在不同上下文中表现出不同的行为。
4.如果一个子类要继承父类的构造函数,应该如何实现?
答:如果一个子类要继承父类的构造函数,可以在子类的构造函数中通过super关键字调用父类的构造函数。
如果子类没有显式地定义构造函数,则会自动调用父类的无参构造函数。
5.什么是抽象类?在Java中如何定义抽象类?
答:抽象类是一个不能被实例化的类,它只能作为其他类的基类。
抽象类可以包含抽象方法和非抽象方法。
在Java中,使用abstract关键字来定义抽象类,抽象类不能被实例化,但可以被继承。
如果一个子类继承了一个抽象类,那么它必须实现该抽象类中的所有抽象方法。
第7章继承和接口设计一.选择题1.在C#中,一个类【】。
A) 可以继承多个类B) 可以实现多个接口C) 在一个程序中只能有一个子类D) 只能实现一个接口2.【】关键字用于在C#中从派生类中访问基类的成员。
A) new B) super C) this D) base 3.在定义类时,若希望类的某个方法能够在派生类中进一步改进,以满足派生类的不同需要,则应将该方法声明为【】。
A) new B) public C) virtual D) override4.在C#中,在派生类中对基类的虚方法进行重写,要求在派生类的声明中使用【】。
A) new B) public C) virtual D) override5.已知类B是由类A继承而来,类A中有一个名为M的非虚方法,现在希望在类B中也定义一个名为M的方法,且两方法的参数个数和类型完全相同,若希望编译时不出现警告信息,则在类B中声明该方法时,应使用【】关键字。
A) static B) new C) override D) virtual 6.假设类B继承了类A,下列说法错误的是【】。
A) 类B中的成员可以访问类A中的公有成员B) 类B中的成员可以访问类A中的保护成员C) 类B中的成员可以访问类A中的私有成员D) 类B中的成员可以访问类A中的静态成员7.关于多态,下列说法正确的是【】。
A) 多态实际上就是重载,它们本质上是以一样的B) 多态可以分为编译时多态和运行时多态。
前者的特点是在编译时就能确定要调用成员方法的哪个版本,后者则是在程序运行时才能确定要调用成员方法的哪个版本。
C) 编译时多态是在程序运行时才能确定要调用成员方法的哪个版本,而运行时多态在编译时就能确定要调用成员方法的哪个版本。
D) 多态和重载是两个完全不同的概念,前者是通过定义虚方法和重写虚方法来实现,后者是通过对同一函数名编写多个不同的实现代码来实现。
8.下列关于接口的说法,正确的是【】。
A) 接口中定义的方法都必须是虚方法B) 接口中定义的方法可以编写其实现代码C) 继承接口的类可提供被继承接口中部分成员的实现代码D) 接口中的所有方法都必须在其派生类中得到实现。
9.下列关于虚方法的描述中,正确的是【】。
A) 虚方法能在程序执行时动态确定要调用的方法,因此比非虚方法更灵活B) 在定义虚方法时,基类和派生类的方法定义语句中都要带上virtual修饰符C) 在重写基类的虚方法时,为消除隐藏基类成员的警告,需要带上new修饰符D) 在重写基类的虚方法时,需要同时带上virtual和override修饰符10.在C#中,以下关于抽象类的叙述中错误的是【】。
A) 抽象类可以包含抽象方法B) 含有抽象方法的类一定是抽象类C) 抽象类不能被实例化D) 抽象类可以是密封类11.在C#中,以下关于抽象类和接口的叙述中正确的是【】。
A) 抽象类可以包含非抽象方法,而接口不包含任何方法的实现B) 抽象类可以被实例化,而接口不能被实例化C) 抽象类不能被实例化,而接口可以被实例化D) 抽象类能够被继承,而接口不能被继承12.在C#中,以下关于抽象类和接口的叙述中正确的是【】。
A) 在抽象类中,所有的方法都是抽象方法B) 继承自抽象类的子类必须实现其父类(抽象类)中的所有抽象方法C) 在接口的定义中可以有方法实现,在抽象类的定义中不能有方法实现D) 一个类可以从多个接口继承,也可以从多个抽象类继承13.以下类和接口的区别中正确的是【】。
A) 类可以继承而接口不可以B) 类不可以继承而接口可以C) 类可以多继承而接口不可以D) 类不可以多继承而接口可以14.下列方法定义中,【】是抽象方法。
A) static void func(){ } B) virtual void func(){ }C) abstract void func(){ } D) overridel void func(){ } 15.下列关于接口的说法,错误的是【】。
A) 一个类可以有多个基类和多个基接口B) 抽象类和接口都不能被实例化C) 抽象类自身可以定义成员,而接口不可以D) 类不可以多重继承,而接口可以。
16.已知类Base、Derived的定义如下:class Base{ public void Hello(){ in Base!”); }}class Derived: Base{ public new void Hello(){ i n Derived!”); }}则下列语句段在控制台中的输出结果是【】。
Derived x=new Derived();();A) Hello in Base! B) Hello in Base! Hello in Derived!C) Hello in Derived! D) Hello in Derived!Hello in Base!17.关于继承,下列说法正确的是【】。
A) 子类将继承父类所有的成员B) 子类将继承父类的非私有成员C) 子类只继承父类public成员D) 子类只继承父类的方法,而不继承属性18.下列是抽象类的声明的是【】。
A) abstract class figure{ } B) c lass abstract figure{ }C) seald class figure{ } D) static class figure{}19.abstract修饰的方法是抽象方法,抽象方法只有声明而无主体,且【】。
A) 只能存在于抽象类中B) 可以在任何类中C) 只能在接口中D) 只能在密封类中20.重写一个基类的虚方法时,应与原虚方法的方法名相同,并且【】。
A) 不能改变方法的参数类型、个数和返回值B) 可以改变方法的参数类型、个数和返回值C) 可以改变方法的返回值D) 可以改变方法的参数类型和个数21.下面有关继承的说法中,正确的是【】。
A) A类和B类均有C类需要的成员,因此可以从A类和B类共同派生出C类B) 在派生新类时,可以指明是公有派生、私有派生或保护派生C) 派生类可以继承基类中的成员,同时也继承基类的父类中的成员D) 在派生类中,不能添加新的成员,只能继承基类的成员22.为了防止从所修饰的类派生出其他类,可以将此类定义为【】。
A) 抽象类B) 密封类C) 静态类D) 私有类23.若想从派生类中访问基类的成员,可以使用【】。
A) this关键字B) me关键字C) base关键字D) override关键字24.下面有关派生类的描述中,不正确的是【】。
A) 派生类可以继承基类的构造函数B) 派生类可以隐藏和重载基类的成员C) 派生类不能访问基类的私有成员D) 派生类只能有一个直接基类25.C#中的多态不能通过【】实现。
A) 接口B) 抽象类C) 密封类D) 虚方法26.下列程序错误的原因是【】。
sealed class SealedClass{ }class Derived:SealedClass{ }A) SealedClass类不能被继承B) 没有Main()入口C) SealedClass没有被实例化D) 以上皆是27.下面关于接口的叙述中,不正确的是【】。
A) 接口只是由方法、属性、索引器或事件组成的框架,并没有描述任何对象的实例代码B) 接口的所有成员都被自动定义为公有的,不可使用访问修饰符来定义接口成员C) 类可以通过在类型定义语句中包括冒号和接口名来表明它正在实现接口D) 一个类只能实现一个接口28.接口可以包含一个或多个成员,以下选项中【】不能包含在接口中。
A) 方法B) 属性C) 事件D) 常量29.下列叙述中,正确的是【】。
A) 接口中可以有虚方法B) 一个类可以实现多个接口C) 接口能被实例化D) 接口中可以包含已实现的方法30. 关于虚方法实现多态,下列说法错误的是【】。
A) 定义虚方法使用关键字virtual B) 关键字virtual可以与override一起使用C) 虚方法是实现多态的一种应用形式D) 派生类是实现多态的一种应用形式31. 以下类MyClass的定义中,【】是合法的抽象类。
A) abstract class MyClass { public abstract int getCount(); }B) abstract class MyClass { public virtual abstract intgetCount(); }C) abstract class MyClass { private abstract int getCount(); }D) abstract class MyClass { public static abstract intgetCount(); }32. 分析下列程序中类MyClass的定义class BaseClass{ public int i; }class MyClass:BaseClass{ public new int i; }则下列语句在Console 上的输出为【】。
MyClass y = new MyClass();BaseClass x = y;= 100;("{0}, {1}",,;A) 0, 0 B) 100, 100 C) 0, 100 D) 100, 033. 在C#程序中定义如下IPlay接口,实现此接口代码正确的是【】。
interface IPlay{ void Play();void Show();}A) class Teacher :Iplay{ void Play(){ 以下泛型集合声明中正确的是【】。
A) List<int> f=new List<int>(); B) List<int> f=new List ();C) List f=new List (); D) List<int> f=new List<int>;34. 以下关于泛型的叙述中错误的是【】。
A) 泛型是通过参数化类型来实现在同一份代码上操作多种数据类型B) 泛型编程是一种编程范式,其特点是参数化类型,C) 泛型类型和普通类型的区别在于泛型类型与一组类型参数或类型变量关联D) 以上都不对二.填空题1.在C#中有两种多态性:编译时的多态性和运行时的多态性。
编译时的多态性是通过【虚方法和重写虚方法】实现的,运行时的多态性是通过继承和【重载/隐藏】来实现的。
2.在声明类时,在类名前使用【abstract】修饰符,则声明的类只能作为其他类的基类,不能被实例化。
3.在声明类时,在类名前使用【sealed 】修饰符,则声明的类不能作为其他类的基类,不能再派生新的类。