9、Java面向对象之继承和多态作业题
Java程序设计(继承与多态)期末单元测试与答案
一、单选题1、Java语言中,所创建的子类都应有一个()。
A.派生类B.子类C.抽象类D.父类正确答案:D2、如果子类构造器中没有super()出现,那么编译器则会默认加上()构造器。
A.super()B.superC.thisD.this()正确答案:A3、Java中构造方法super()的使用,下列不正确的是()。
A.直接引用B.调用子类的构造函数C.引用父类成员D.调用父类的构造函数正确答案:B4、下列说法不正确的是()。
A.在同一个类中定义的重载方法可以互相调用B.构造方法允许重载C.子类无条件的调用父类无参构造方法D.子类不允许调用父类的构造方法正确答案:D5、代码如下:Employee man = new Manager(); man.test();上述代码是()的实现。
A.方法调用B.方法重写C.对象引用D.方法重载正确答案:A6、对成员的访问控制保护最强的是()。
A.缺省B.privateC.publicD.protected正确答案:B7、下列对封装性的描述中,错误的是()。
A.封装体中的属性和行为的访问权限是相同的B.封装使得抽象的数据类型提高了可重用性C.封装体包含了属性和行为D.被封装的某些信息在封装体外是不可见的正确答案:A8、在类的修饰符中,规定只能被同一包类所使用的修饰符是()。
A.abstractB.finalC.publicD.默认正确答案:D9、在Java语言中,类方法(静态方法)可以被继承,但是不能被()。
A.重载B.继承C.重写D.重构正确答案:C10、Java中,哪种是不可以用来限制存取权限的关键字()。
A.extendsB.protectedC.publicD.private正确答案:A11、不允许作为类及类成员的访问控制符的是()。
A.protectedB.staticC.privateD.public正确答案:B12、在Java中,能使派生类的功能可以被基类的方法或引用变量所调用,向后兼容,这种方法叫做()。
面向对象测试题及答案
面向对象测试题及答案一、选择题(每题2分,共20分)1. 面向对象编程(OOP)的核心概念不包括以下哪一项?A. 类B. 继承C. 多态D. 过程2. 在Java中,以下哪个关键字用于定义类?A. classB. typeC. structD. interface3. 下列哪个选项不是Java中访问控制的关键字?A. publicB. privateC. protectedD. global4. 封装是面向对象编程的一个重要特性,它主要指的是:A. 将数据和操作数据的方法组合在一起B. 将所有数据都设为公开访问C. 只允许通过特定的方法访问数据D. 将数据和方法分离5. 在Java中,以下哪个不是构造方法的特点?A. 与类名相同B. 没有返回类型C. 可以重载D. 可以被继承6. 继承在面向对象编程中允许:A. 一个类只能继承一个类B. 一个类可以继承多个类C. 一个类可以继承多个接口D. 一个类可以同时继承多个类和接口7. 接口在Java中的主要作用是:A. 定义类B. 实现多继承C. 定义方法的实现D. 定义方法的签名8. 以下哪个是Java中实现多态的方式?A. 继承B. 接口C. 重载D. 重写9. 抽象类在Java中不能:A. 被实例化B. 包含抽象方法C. 包含具体方法D. 被继承10. 下列哪个不是Java集合框架中接口?A. ListB. SetC. MapD. Array二、简答题(每题5分,共30分)1. 简述面向对象编程的三大特性。
2. 解释什么是多态,并给出一个Java中多态的例子。
3. 什么是封装?封装在Java中是如何实现的?4. 什么是接口?接口和抽象类有什么区别?5. 什么是构造方法?构造方法的作用是什么?6. 什么是继承?继承在Java中是如何实现的?三、编程题(每题25分,共50分)1. 编写一个Java程序,定义一个名为`Car`的类,包含以下属性和方法:- 属性:品牌(String类型),颜色(String类型),速度(int 类型)- 方法:启动汽车(startCar),加速(accelerate),减速(decelerate)2. 在上述`Car`类的基础上,创建一个名为`ElectricCar`的子类,继承`Car`类,并添加一个额外的属性:电池电量(int类型),并重写`startCar`方法以显示电动汽车启动的信息。
面向对象程序设计(Java)-题库
面向对象程序设计(java)题库抽题规范:(1)此题库共75道题,抽8道作为期末考试题。
其中,易8道,较易33道,较难18道,难16道.(2)按题型,第一大题抽4道,每道10分;第二大题抽2道,每道10分;第三大题抽1道,每道20分;第四大题抽1道,每道20分。
(3)按难易程度:易(1道)、较易(4道)、较难(2道)、难(1道)。
一、解答题(共40道,抽4道,每道10分,共40分)1.面向对象有哪三大特征?封装,继承,多态.2.什么是类?(易)类是定义同一类所有对象的变量和方法的蓝图或原型。
3.什么是对象?对象是类的实例;对象是通过new className产生的,用来调用类的方法;类的构造方法 .。
4.类和对象的区别是什么?java中的类是模板,而对象是依据模版产生的实体5.简述Java的封装性,如何在Java中实现封装封装性是指的把代码封装到大括号中,只能访问自己内部的数据,外边的东西访问不了。
实现为加访问权限。
6.构造方法有哪些特点方法名与类名相同,没有返回值,可以有多个重载。
7.构造方法的作用是什么?(较易)初始化对象,就是你new一个类的时候可以很方便的给你的对象里的属性赋值。
8.this在程序中所代表的意思(易)指当前对象9继承的作用是什么?(易)实现代码复用。
10.Java支持多继承吗?(易)不能。
11.子类可以继承父类的哪些成员?(较难)变量和构造方法。
12.简述构造子类对象时子类和父类构造方法执行顺序(较易)先执行父类再执行子类。
13.什么是方法的重载,如何选择被重载的方法?(较易)同一个类中如果同时存在两个以上的方法有同一个名字,在这种情况下,我们说方法被重载了,这个过程被称为重载。
14什么是方法的重写,如何选择被重写的方法?(较难)当同名方法同时存在于子类和父类中时,对于子类来说就是将继承父亲的方法重载写过了,实现功能完全和父类无关。
15.简述重载和覆盖的区别(较易)重载是让同一方法名的方法可以处理和返回不同类型的数据而覆盖是在子类中改写父类的方法16.什么是成员的隐藏?如何访问被隐藏了的父类成员?(较易)在子类对父类的继承中,如果子类的成员变量和父类的成员变量同名,此时称为子类隐藏了父类的成员变量。
JAVA面向对象基础测试题-继承-封装-多态等测试题教程文件
J A V A面向对象基础测试题-继承-封装-多态等测试题JAVA面向对象基础测试题提示:本题为第一阶段,JAVA面向对象基础部分练习题,包括对象,类,继承,封装,多态,接口,内部类等等,java核心基础,适合初学者对面向对象基础的知识进行测试,以便查漏补缺。
1.程序执行的结果是:()。
01public class Point{02int y = 7;03public void step(int y) {04y += y;05System.out.println(y);06}07public static void main(String[] args) {08Point p = new Point();09p.step(10);10}11}A.14B.20C.10D.17正确答案:B解析:2.程序的执行结果是:()。
01public class Question {02private int num;03public static void main(String [] args){04Question q = new Question();q.num=13;06update(q);07System.out.println(q.num);08}09public static void update(Question q){10q.num=9;11}12}A.13B.9C.0D.4正确答案:B解析:3.程序执行的结果是:()。
01public class Answer {02public static void main(String[] args) {03int score = 20;04Answer ans= new Answer();05ans.add(score);06System.out.println(" main: score = " + score);07}08void add(int score) {09System.out.println(" add: score=" + score++);10}11A.1add: score=212main: score = 21B.1add: score=202main: score = 21C.1add: score=212main: score = 20D.1add: score=202main: score = 20正确答案:D解析:4.下列代码编译或运行的结果是:()。
java继承练习题
java继承练习题Java继承练习题Java是一种面向对象的编程语言,其核心思想是将现实世界中的事物抽象为对象,并通过类的定义和实例化来描述和操作这些对象。
在Java中,继承是一种重要的机制,它允许一个类继承另一个类的属性和方法,从而实现代码的复用和扩展性。
在本文中,我们将通过一些练习题来巩固对Java继承的理解和应用。
练习题一:动物类和子类我们先定义一个动物类Animal,它具有属性name和age,并且有一个方法say()用于输出动物的叫声。
接下来,我们定义两个子类Dog和Cat,它们分别继承自Animal类,并且分别重写父类的say()方法。
其中,Dog类的say()方法输出"汪汪汪",Cat类的say()方法输出"喵喵喵"。
```javaclass Animal {protected String name;protected int age;public Animal(String name, int age) { = name;this.age = age;}public void say() {System.out.println("动物发出叫声");}}class Dog extends Animal {public Dog(String name, int age) {super(name, age);}@Overridepublic void say() {System.out.println("汪汪汪");}}class Cat extends Animal {public Cat(String name, int age) {super(name, age);}@Overridepublic void say() {System.out.println("喵喵喵");}}public class AnimalTest {public static void main(String[] args) {Animal animal = new Animal("动物", 5);animal.say();Dog dog = new Dog("小狗", 2);dog.say();Cat cat = new Cat("小猫", 1);cat.say();}}```练习题二:形状类和子类接下来,我们定义一个形状类Shape,它具有一个抽象方法area()用于计算形状的面积。
第4章-Java语言与面向对象作业习题与答案
第4章 Java语言与面向对象作业习题与答案一、简答题1.什么是对象?什么是类?对象是一种抽象数据类型。
它包含了事物的静态特征(属性)和动态特征(行为)两大特征。
类是一组同种对象的集合与抽象。
即是具有相同属性和方法的一组对象集合。
2.Java语言的单继承是指什么?一个类可以派生出多个子类,但子类只允许有一个父类,而不允许存在多个父类。
3.在一个共有类中的数据成员与方法成员的访问控制符为缺省,则这个类可供什么样的包引用?当一个类的访问控制符为public共有时,说明这个类作为整体对其它类是可见和可引用的;但其数据成员和方法成员访问控制符为缺省时,它们只能被包中类(含当前类)引用。
4.抽象类的用途(1)设计在更高的层次上进行,不考虑具体对象,从而大大简化了处理问题的复杂性;(2)设计出的类也具有更加良好的可扩展性。
5.什么是非静态的成员变量?非静态成员即为实例成员变量(没有加static修饰的变量)。
6.异常Exception和错误Error有什么不同?Java如何处理它们?答:错误通常是指程序本身存在非法情形,常常是因为代码存在问题而引起的,如造成系统崩溃、虚拟机粗错、动态失败等,这一类错误无法恢复或不可能捕获,并将导致应用程序中断。
异常表示另外一种“非同寻常”的错误。
这种错误通常是不可预测,但可以被捕获且可以恢复。
常见的异常情况包括存不足、找不到所需文件等。
对于错误,编程人员可以通过对程序进行更仔细的检查,以避免这种错误。
对于异常,可以使用捕获机制进行捕获,再编写出相应的处理程序。
7.简单述Java的异常处理机制。
答:Java采取“抛出—捕获”的方式,一旦一个异常想象产生,Runnable环境和应用程序会抛出各种标准类型和自己定义的异常,系统就可以捕获这些异常,并一定有相应的机制来处理它,确保不会产生司机、死循环或其它对操作系统的损害,从而保证了整个程序运行的安全性。
8.简单述throw语句和throws关键字之间的差别。
java练习题答案
java练习题答案第1章java语言概述习题一、填空题1、面向对象程序的主要特征:继承,__封装___,___多态_____。
2、java中的继承机制之所以能够降低程序的复杂性,提高程序的效率,主要是因为它使代码可以__重用或复用___.3、java语言中,为将源代码翻译成__字节码__文件时产生的错误称为编译错误,而将程序在运行中产生的错误称为运行错误。
4、javac是java语言中的编译器,基本语法是:javac[选项]__文件名__,java是java语言中的解释执行器,基本语法是:java[选项]___类名___.5、java语言的主要贡献者是谁Jamegoling二、单选题1、编译JavaApplication源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B)。
A、javaB、.claC、htmlD、.e某e2、main方法是JavaApplication程序执行的入口点,关于main方法的方法首部,以下(B)项是合法的。
A、publictaticvoidmain()B、publictaticvoidmain(Stringarg[])C、publictaticintmain(String[]arg)D、publicvoidmain(Stringarg[])三、判断1、Java语言具有较好的安全性和可移植性及与平台无关等特性。
√2、Java语言的源程序不是编译型的,而是编译解释型的。
√四、问答题1、编写、运行java程序需要经过哪些主要步骤?答:1.编写源文件,扩展名必须是.java2.编写java源程序,使用java编译器编写源文件,得到字节码文件3.运行java程序,使用javaSE平台只不过的java解释器来解释执行字节码文件。
2、阅读下列java源代码文件,并回答问题publicclaSpeak{voidpeakHello(){Sytem.out.println(\);}}cla某iti8{publictaticvoidmain(Stringarg[]){Speakp=newSpeak();p.peakHello();}}(1)上述源文件的名字是什么?Speak.java(2)上述源文件编译后生成几个字节码文件,这些字节码文件的名字分别是什么?Speak.cla某iti8.cla第2章(1)基本数据类型练习题一、填空题1、java基本数据类型中整型,字符型分别占用字节数为___4___,___2____.2、java语言中的浮点数根据数据存储长度和数值精度的不同,进一步分为_float__和__double__两种具体类型。
Java题库——Chapter11继承和多态
Java题库——Chapter11继承和多态1)Analyze the following code:public class Test {public static void main(String[ ] args) {B b = new B();b.m(5);System.out.println("i is " + b.i);}}class A {int i;public void m(int i) {this.i = i;}}class B extends A {public void m(String s) {}}A)The program has a compilation error, because m is overridden with a different signature in B.B)The method m is not overridden in B. B inherits the method m from A and defines an overloaded method m in B.C)The program has a runtime error on b.i, because i is not accessible from b.D)The program has a compilation error, because b.m(5) cannot be invoked since the method m(int) is hidden in B. B中没有重写⽅法m。
B继承了A中的⽅法m,并在B中定义了⼀个重载的⽅法m。
2)Analyze the following code.// Program 1public class Test {public static void main(String[ ] args) {Object a1 = new A();Object a2 = new A();System.out.println(((A)a1).equals((A)a2));}}class A {int x;public boolean equals(A a) {return this.x == a.x;}}// Program 2public class Test {public static void main(String[ ] args) {A a1 = new A();A a2 = new A();System.out.println(a1.equals(a2));}}class A {int x;public boolean equals(A a) {return this.x == a.x;}}A)Program 1 displays true and Program 2 displays trueB)Program 1 displays false and Program 2 displays trueC)Program 1 displays false and Program 2 displays falseD)Program 1 displays true and Program 2 displays false3)Invoking ________ removes all elements in an ArrayList x. 3) _______A)x.clear() B)x.delete() C)x.remove() D)x.empty() E)x.clean()4)Analyze the following code:Cylinder cy = new Cylinder(1, 1);Circle c = cy; 4) _______A)The code has a runtime error. B)The code has a compile error. C)The code is fine.5)Which of the following statements are true? (Choose all that apply.) 5) _______A)Overloading a method is to provide more than one method with the same name but with different signatures to distinguish them.B)A private method cannot be overridden. If a method defined in a subclass is private in its superclass, the two methods are completely unrelated.C)It is a compilation error if two methods differ only in return type in the same class.D)A static method cannot be overridden. If a static method defined in the superclass is redefined in a subclass, the method defined in the superclass is hidden.E)To override a method, the method must be defined in the subclass using the same signature and compatible return type as in its superclass.1、重载⼀个⽅法是提供多个具有相同名称但具有不同签名的⽅法来区分它们。
java面向对象考题和答案
1.下面代码的输出结果是A.300 300B.100 100C.300 100D.100 3002.程序执行的结果是:::x =" + x++; }}A.doStuff:x =7B. main: x = 7B.doStuff:x =7main: x = 6C.doStuff:x =6main: x = 7D.doStuff:x =6main: x = 63.下列关于JVM的内存结构描述正确的是:A.类的各种信息在方法区中保存B.堆用于存放程序运行过程当中所有的局部变量C.栈用于存储使用new关键字创建的对象D.数组属于JVM的内存结构4.下列代码的输出结果是:A.cB.iC.dD.s5.程序执行的结果是:A.nullB.TomC.JackD." "6.关于构造方法,下列说法错误的是:A.构造方法不可以进行方法重写B.构造方法用来实例化一个新的对象C.构造方法具有和类名相同的名称D.构造方法不返回任何数据类型7.关于 Java 中继承的特点,下列说法正确的是:A.使类的定义复杂化B.Java 只支持单继承,不可多继承,但可以通过实现接口来达到多继承的目的C.子类继承父类的所有成员变量和方法,包括父类的构造方法D.不可以多层继承,即一个类不可以继承另一个类的子类8.下列代码运行的结果是:A.Value: 3B.Value: 8C.Value: 13D.Value: 189.下列代码编译和运行的结果是:A.输出:0000B.输出:4321C.代码public EmployeeString id {行,出现编译错误D.抛出运行时异常10.下列代码的运行结果是:A.peepB.barkC.meowD.抛出运行时异常11.下列代码编译和运行的结果是:A.输出:TestAB.输出:TestBC.输出:TestA TestBD.编译错误12.请看下列代码:class One {void foo {}}class Two extends One {// insert method here}下列选项中的代码,放置在<插入代码>处无编译错误的是: A.int foo { / more code here / }B. protected void foo { / more code here / }C. public void foo { / more code here / }D. private void foo { / more code here / }13.下列选项中,不属于Java 的访问修饰符的是:A.privateB.protectedC.friendlyD.public14.下列代码的输出结果是:A.300-100-100-100-100B.300-300-100-100-100C.300-300-300-100-100D.300-300-300-300-10015.下列代码运行的结果是:public class Base { public static final String FOO = "foo";A.foofoofoofoofooB.foobarfoobarbarC.foobarfoofoofooD.foobarfoobarfoo16.关于下列代码说法正确的是:A.编译错误B.运行时抛出异常C.运行后,fa对象属性id的值没有改变,应然是42D.运行后,fa对象属性id的值改变成新的值6917.请看下列代码编译和运行的结果是:A.sun 2B.null 2C.null 1D.运行时抛出NullPointerException异常18.下列代码的输出结果是:A.0, 0,0B.150, 60, 0C.150, 150, 150D.抛出运行时异常19.请看下列代码:public abstract class Employee {protected abstract double getSalesAmount;public double getCommision {return getSalesAmount 0.15;estA {}}class Sales extends Employee {<插入代码>}在<插入代码>处填入的方法正确的是:A.double getSalesAmount { return 1230.45; }B.public double getSalesAmount { return 1230.45; }C.private double getSalesAmount { return 1230.45; }D.protected double getSalesAmount { return 1230.45; }20.关于下列代码说法正确的是:public interface A { public void doSomethingStringthing;}public class AImpl implements A { public void doSomethingString msg { }}public class B { public A doit { return null; } public String execute { return null; }}public class C extends B { public AImpl doit { return null; } public Object execute { return null; }} A. 所有类和接口都编译成功 B.类B编译失败C.类Aimpl编译失败D.类C编译失败21.关于下列代码说法正确的是:interface A { public void aMethod;}interface B { public void bMethod;}interface C extends A, B { public void cMethod;}class D implements B { public void bMethod {}}class E extends D implements C { public void aMethod {} public void bMethod {} public void cMethod {}}A.编译失败B.如果定义D e = new E;, 那么 e.bMethod;调用D类的bMethod方法C.如果定义D e = Dnew E;, 那么 e.bMethod;调用D类的bMethod方法D.如果定义D e = Dnew E;, 那么 e.bMethod;调用E类的bMethod方法22.请看下列代码:处理请求";}};}}如果上述代码采用回调模式编写,下列关于ServletAction的定义正确的是:A. public static class ServletAction { public void doService;}B.public final class ServletAction { public void doService;}C.public class ServletAction { public void doService;}D. public interface ServletAction { public void doService;}23.下列代码运行的结果是:A.HelloB. Hello WorldC. Hello World 5D.运行后无输出24.请看下列代码编译和运行的结果是:A.输出:testB.输出:nullC.代码行,编译出错D.代码public String toString {行,编译出错25.请看下列代码:关于上述代码说法正确的是:A.在第5行出现编译错误,fn方法的参数必须用final修饰B.在第3行出现编译错误,在方法的内部不能写类C.在第8行出现编译错误,在方法的内部不能实例化Inner类的对象D.运行代码,控制台输出100A1,正确答案:C2,正确答案:D3,正确答案:A4,正确答案:A5,正确答案:B6,正确答案:B7,正确答案:B8,正确答案:A9,正确答案:C10,正确答案:D11,正确答案:B 12,正确答案:BC 13,正确答案:C 14,正确答案:B 15,正确答案:D 16,正确答案:A 17,正确答案:D 18,正确答案:C 19,正确答案:BD 20,正确答案:D 21,正确答案:D 22,正确答案:D 23,正确答案:A 24,正确答案:A 25,正确答案:A。
JAVA面向对象基础测试题,继承,封装,多态等测试题
}
14
}
A.编译错误
B.运行时异常抛出
C.运行后,cell对象属性id的值没有改变,仍然是1001
D.运行后,cell对象属性id的值改变成新的值1002
正确答案:A解析:
14.
下列选项中,不属于Java的访问控制修饰符的是:()。
A.private
B.protected
C.friendly
D.public
11
}
12
}
A.public String jump(int[] vals) {行,编译出错
B.System.out.println(s.jump(4, 5));行,抛出运行时异常
C.输出:jump one
D.输出:jump two
正确答案:C解析:
5.
关于下列代码说法正确的是:()。
01
public class Storm {
正确答案:AB解析:
17.
请看下列代码:
1
public class Tetromino {
2
protected int move(int x) {
3
return 0;
4
}
5
}
6
class T extends Tetromino {
7
<插入代码>
8
}
在<插入代码>处填入选项中的代码,使T类没有编译错误的是:()。
C.如果修饰方法,则该方法不能在子类中被覆盖
D.如果修饰方法,则该方法所在的类不能被继承
正确答案:C解析:
13.
关于下列代码说法正确的是:()。
01
public class Cell {
java 继承练习题
java 继承练习题Java 继承练习题Java 是一种面向对象的编程语言,继承是其核心概念之一。
通过继承,我们可以创建新的类,并从现有的类中继承属性和方法。
继承不仅提高了代码的可重用性,还使得代码更加易于维护和扩展。
在本文中,我们将通过一些练习题来巩固和加深对 Java 继承的理解。
1. 创建一个 Animal 类,具有属性 name 和 age,以及方法 eat() 和 sleep()。
然后创建一个 Dog 类,继承自 Animal 类,并添加一个方法 bark()。
最后创建一个 Cat 类,也继承自 Animal 类,并添加一个方法 meow()。
在主函数中创建一个 Dog 对象和一个 Cat 对象,并调用它们的方法。
2. 创建一个 Shape 类,具有属性 color 和 filled,以及方法 getArea() 和getPerimeter()。
然后创建一个 Circle 类,继承自 Shape 类,并添加一个属性radius,以及重写的方法 getArea() 和 getPerimeter()。
最后创建一个 Rectangle 类,也继承自 Shape 类,并添加属性 width 和 height,以及重写的方法getArea() 和 getPerimeter()。
在主函数中创建一个 Circle 对象和一个 Rectangle 对象,并调用它们的方法。
3. 创建一个 Person 类,具有属性 name 和 age,以及方法 eat() 和 sleep()。
然后创建一个 Student 类,继承自 Person 类,并添加属性 grade,以及重写的方法 eat() 和 sleep()。
最后创建一个 Teacher 类,也继承自 Person 类,并添加属性 subject,以及重写的方法 eat() 和 sleep()。
在主函数中创建一个 Student 对象和一个 Teacher 对象,并调用它们的方法。
JAVA基础第章继承与多态练习题
第4章继承与多态一.选择题1. 编译和运行以下两文件结果是( D )。
//文件P1.javapackage MyPackage;class P1{void afancymethod(){System.out.println("What a fancy method");}}//文件P2.javapackage YourPackage;import MyPackage.*;public class P2 extends P1{public static void main(String argv[]){P2 p2 = new P2();p2.afancymethod();}}A.两个均通过编译,P2运行时输出What a fancy methodB.没一个通过编译C.两个均通过编译,但P2运行时出错D.P1 通过编译,但P2出现编译错误2.下列程序运行的结果是(A )。
package a;package b;public class D{public static void main(String args[]) {System.out.println("^_^,今天心情不错!");}}A.出现编译错误B.^_^,今天心情不错!C.通过编译,运行时出错D.以上都不对3.Java的核心类库中哪个包,Java系统能自动引入(B )。
A.java.io B.ngC. D.java.util4.下列程序运行结果是( A )。
private class Base{Base(){int i = 100;System.out.println(i);}public class Pri extends Base{static int i = 200;public static void main(String argv[]){Pri p = new Pri();System.out.println(i);}}A.编译错误B.200 C.100 200 D.1005.下列程序运行结果是(C )。
JAVA基础第章继承与多态练习题
第4章继承与多态一.选择题1. 编译和运行以下两文件结果是( D )。
//文件P1.javapackage MyPackage;class P1{void afancymethod(){System.out.println("What a fancy method");}}//文件P2.javapackage YourPackage;import MyPackage.*;public class P2 extends P1{public static void main(String argv[]){P2 p2 = new P2();p2.afancymethod();}}A.两个均通过编译,P2运行时输出What a fancy methodB.没一个通过编译C.两个均通过编译,但P2运行时出错D.P1 通过编译,但P2出现编译错误2.下列程序运行的结果是(A )。
package a;package b;public class D{public static void main(String args[]) {System.out.println("^_^,今天心情不错!");}}A.出现编译错误B.^_^,今天心情不错!C.通过编译,运行时出错D.以上都不对3.Java的核心类库中哪个包,Java系统能自动引入(B )。
A.java.io B.ngC. D.java.util4.下列程序运行结果是( A )。
private class Base{Base(){int i = 100;System.out.println(i);}public class Pri extends Base{static int i = 200;public static void main(String argv[]){Pri p = new Pri();System.out.println(i);}}A.编译错误B.200 C.100 200 D.1005.下列程序运行结果是(C )。
java 继承多态接口选择题
一、前言Java 是一种面向对象的编程语言,它支持继承、多态和接口等特性。
在使用Java进行编程时,对于继承、多态和接口的理解至关重要。
本文将围绕这三个主题,提出一些选择题,以帮助读者加深对Java面向对象编程的理解。
二、继承1. 继承是Java面向对象编程的重要特性之一。
在Java中,继承通过extends关键字来实现。
以下哪些说法是正确的?a) 子类继承了父类的所有成员变量和方法b) 子类可以继承多个父类c) Java不支持多重继承d) 父类可以继承子类e) 子类可以访问父类的private成员变量和方法2. 在使用继承时,有一些注意事项需要考虑。
以下哪些说法是正确的?a) 子类可以重写父类的private方法b) 子类的构造函数默认调用父类的无参构造函数c) 父类的private成员变量和方法不会被继承d) 子类可以访问父类的protected成员变量和方法e) 继承可以增强代码的重用性和扩展性三、多态1. 多态是Java面向对象编程的另一个重要特性。
在Java中,多态通过继承和重写来实现。
以下哪些说法是正确的?a) 多态可以提高代码的灵活性和可维护性b) 子类实现了父类的多态特性c) 多态可以使代码更易于扩展和修改d) 多态可以实现接口的统一访问2. 在使用多态时,有一些需要注意的地方。
以下哪些说法是正确的?a) 父类引用可以指向子类对象b) 子类引用可以指向父类对象c) 多态不适用于静态方法d) 引用类型决定了可以调用的方法e) 多态可以提高代码的可读性和可维护性四、接口1. 接口是Java面向对象编程的另一个重要特性,它定义了一组抽象方法。
以下哪些说法是正确的?a) 接口中的方法可以有方法体b) 类可以实现多个接口c) 接口可以继承多个接口d) 接口中的方法默认是public和abstracte) 接口可以包含成员变量2. 在使用接口时,有一些需要注意的地方。
以下哪些说法是正确的?a) 实现接口的类必须实现接口中的所有抽象方法b) 接口可以继承类c) 接口可以继承接口d) 实现多个接口时,如果有重名方法则需要在实现类中进行重写e) 接口可以包含静态方法和默认方法五、结语通过以上选择题,希望读者能够加深对Java面向对象编程中继承、多态和接口的理解。
JAVA面向对象基础测试题,继承,封装,多态等测试题
J A V A面向对象基础测试题提示:本题为第一阶段,JAVA面向对象基础部分练习题,包括对象,类,继承,封装,多态,接口,内部类等等,java核心基础,适合初学者对面向对象基础的知识进行测试,以便查漏补缺。
1.程序执行的结果是:()。
01public class Point{02int y = 7;03public void step(int y) {04y += y;05System.out.println(y);06}07public static void main(String[] args) { 08Point p = new Point();09p.step(10);10}11}A.14B.20C.10D.17正确答案:B解析:2.程序的执行结果是:()。
01public class Question {02private int num;03public static void main(String [] args){ 04Question q = new Question();05q.num=13;06update(q);07System.out.println(q.num);08}public static void update(Question q){ 10q.num=9;11}12}A.13B.9C.0D.4正确答案:B解析:3.程序执行的结果是:()。
01public class Answer {public static void main(String[] args) {03int score = 20;04Answer ans= new Answer();05ans.add(score);06System.out.println(" main: score = " + score);07}08void add(int score) {09System.out.println(" add: score=" + score++);1011}A.1add: score=212main: score = 21 B.1add: score=202main: score = 21 C.1add: score=212main: score = 20D.1add: score=202main: score = 20正确答案:D解析:4.下列代码编译或运行的结果是:()。
java封装继承多态选择题附加答案解析
java封装继承多态选择题附加答案解析1. 封装的主要目的是:A. 增加代码的长度B. 隐藏实现细节C. 使所有方法都公有D. 提高程序运行速度答案: B。
解析:封装是面向对象编程的重要原则,通过将数据和方法封装在类中,隐藏内部实现细节,提高代码的可维护性和安全性。
2. 在以下选项中,哪一种方法用于实现封装?A. 使用`public`关键字定义所有成员B. 使用`private`关键字隐藏类的实现细节C. 使用`static`关键字定义所有成员D. 使用`final`关键字定义所有成员答案: B。
解析:封装是通过使用`private`关键字将类的实现细节隐藏起来,并提供公共的访问方法(getter和setter)来访问这些私有成员。
3. 在Java中,如果类B继承自类A,则下列哪个选项是正确的?A. 类B是类A的超类B. 类A是类B的子类C. 类A是类B的超类D. 类B不能有自己的方法答案: C。
解析:类A是类B的超类,类B是类A的子类。
子类可以有自己的方法和属性。
4. 在以下哪个情况下,一个方法被认为是重写了另一个方法?A. 当方法具有相同的名称但不同的参数列表时B. 当方法在子类中重新实现且具有相同的名称、返回类型和参数列表时C. 当方法在同一个类中被定义了两次时D. 当方法在类中没有定义时答案: B。
解析:方法重写发生在子类中,要求被重写的方法在子类中具有相同的方法名、返回类型和参数列表。
5. 在以下访问修饰符中,哪个是最具限制性的?A. publicB. protectedC. default(无修饰符)D. private答案: D。
解析:`private`是最具限制性的访问修饰符,只有在同一个类中可以访问。
6. 以下哪个场景中体现了多态性?A. 一个方法有多个重载版本B. 一个类有多个构造方法C. 一个子类可以使用父类的属性和方法D. 父类的引用指向子类的对象答案: D。
解析:多态性允许父类的引用指向子类的对象,实际调用的方法取决于对象的运行时类型。
java多态练习题
Java多态练习题一、选择题A. 多态是指同一方法可以根据对象的不同而有不同的实现B. 多态只能用于类的继承关系中C. 在Java中,方法重载不属于多态D. 多态可以提高代码的可扩展性和可维护性A. extendsB. implementsC. staticD. overrideA. 可以直接调用子类的特有方法B. 必须进行类型转换才能调用子类的特有方法C. 可以调用父类的所有方法D. 无法调用任何方法二、填空题1. 在Java中,多态的三个必要条件是:________、________和________。
2. 当子类重写父类的方法后,可以使用________关键字来调用父类的方法。
3. 在Java中,________关键字用于判断两个对象的类型是否相同。
三、判断题1. 多态允许同一操作作用于不同的对象,产生不同的执行结果。
()2. 方法重载(Overload)和方法重写(Override)都是实现多态的方式。
()3. 在Java中,子类对象可以直接赋值给父类引用,而无需进行类型转换。
()四、简答题1. 请简述Java中多态的作用。
2. 请说明方法重写(Override)和方法重载(Overload)的区别。
3. 在使用多态时,如何访问子类特有的方法?五、编程题1. 定义一个动物类(Animal),包含一个吃(eat)的方法。
再定义一个狗类(Dog),继承动物类,并重写吃(eat)方法。
编写一个测试类,创建一个动物类引用,指向一个狗对象,并调用吃(eat)方法。
2. 编写一个图形类(Shape),包含一个求面积(getArea)的方法。
再定义两个子类:矩形类(Rectangle)和圆形类(Circle),分别重写求面积(getArea)方法。
编写一个测试类,创建一个图形数组,包含矩形和圆形对象,遍历数组并调用求面积(getArea)方法。
3. 定义一个员工类(Employee),包含姓名、工资等属性,以及一个计算工资(calculateSalary)的方法。
java面向对象试题及答案
java面向对象试题及答案# Java面向对象试题及答案一、选择题1. 在Java中,以下哪个关键字用于定义类?- A. class- B. interface- C. enum- D. package答案:A2. 以下哪个是Java中的继承特性?- A. 一个类可以继承多个类- B. 类可以继承接口- C. 接口可以继承类- D. 接口可以继承多个接口答案:D3. 以下哪个是Java中封装的体现?- A. 使用public关键字- B. 使用private关键字- C. 使用static关键字- D. 使用final关键字答案:B4. 在Java中,哪个关键字用于实现多态?- A. abstract- B. final- C. override- D. implements答案:C5. 以下哪个是Java的构造方法的特点?- A. 可以有返回类型- B. 可以有多个同名的构造方法- C. 必须有返回类型- D. 必须与类名相同答案:D二、简答题1. 简述面向对象编程的三大特性,并给出Java中的例子。
面向对象编程的三大特性是封装、继承和多态。
- 封装:封装是将对象的实现细节隐藏起来,只暴露出一个可以被外界访问的接口。
例如,在Java中,可以通过使用private关键字来隐藏类的成员变量,只通过public方法来访问这些变量。
- 继承:继承允许新创建的类(子类)继承现有类(父类)的属性和方法。
例如,如果有一个`Animal`类,可以创建一个`Dog`类继承`Animal`类。
- 多态:多态允许同一个接口接受不同的数据类型。
在Java中,可以通过重写父类的方法来实现多态。
例如,`Animal`类有一个`makeSound()`方法,而`Dog`类可以重写这个方法来发出狗的叫声。
2. 解释Java中的接口和抽象类的区别。
接口和抽象类都是Java中实现抽象化的方式,但它们有以下区别: - 接口可以包含抽象方法和默认方法,但不能有具体实现。
java封装继承多态作业题
下面是一个关于Java封装、继承和多态的作业题,可供学习和练习。
题目:学生管理系统
编写一个简单的Java程序,模拟一个学生管理系统。
系统应该包括以下类:
Student类:
属性:学生姓名、学号、年龄、成绩
方法:构造函数、获取学生信息的方法、设置学生信息的方法
Course类:
属性:课程名称、课程编号、授课老师
方法:构造函数、获取课程信息的方法、设置课程信息的方法
Teacher类:
属性:老师姓名、工号、教授课程
方法:构造函数、获取老师信息的方法、设置老师信息的方法
School类:
属性:学校名称、地址、联系电话
方法:构造函数、获取学校信息的方法、设置学校信息的方法
Main类:
创建几个学生对象、课程对象和老师对象,并分别设置它们的信息。
使用多态性质,创建一个列表或数组,存储不同的学生、课程和老师对象,然后通过循环遍历输出它们的信息。
要求:
使用封装的原则,将类的属性设置为私有,并提供公共的访问和修改方法。
使用继承的原则,确保子类可以继承父类的属性和方法。
使用多态的原则,通过父类的引用来操作子类对象。
这个作业题可以帮助学习者理解Java中的封装、继承和多态的概念,并将其应用到一个实际的项目中。
学生可以根据自己的理解和知识水平来扩展这个项目,添加更多的功能和类。
9Java面向对象之继承和多态作业题
9、Java面向对象之继承和多态作业题Java面向对象之继承和多态作业题2021/9/23? 上机要求:使用Eclipse编写主题类、回复类要求如下:主题类继承帖子类,并增加属性:主题id,版块id 回复类继承帖子类,并增加属性:回复id,主题id 在帖子类中实现多态使用super调用父类构造方法? 阶段一:? 需求说明:? 创建主题类,继承帖子类类名 Topic 属性 topicId:int boardId:int 继承类名 Tip 属性 title:String content:String publishTime:String uid:int 方法 getInfo() :void实现思路及关键代码:1、创建主题类:Topic,继承帖子类:Tip2、增加以下属性主题id:int topicId 版块id:int boardId3、添加setter/getter方法4、使用从帖子类继承来的getInfo()方法,输出主题信息 packagecom.workit.part3; public class Topic { private int topicId; private int boardTd; public Topic(int topicId, int boardTd) { super(); this.topicId = topicId; } } this.boardTd = boardTd; package com.workit.part3; public class Tip extends Topic { publicTip(int topicId, int boardTd) { } private String title; private String content; private String publishTime; public String getTitle() { } public void setTitle(String title) { } public String getContent() { } public void setContent(String content) { } public String getPublishTime() { } public void setPublishTime(String publishTime) { } public void title(){ System.out.println(\帖子标题:\\t\); } public void content(){ System.out.println(\帖子内容:\\t\); } public void publishTime(){ System.out.println(\发帖时间:\\t\); } this.publishTime = publishTime;return publishTime; this.content = content; return content; this.title = title; return title; super(topicId, boardTd); // TODO Auto-generated constructorstub }? 阶段二:需求说明:1、创建回复类:Reply ,继承帖子类:Tip2、增加以下属性回复id:intreplyId 主题id:int topicId3、添加setter/getter方法4、使用从帖子类继承来的getInfo()方法,输出回复信息 packagecom.workit.part3; public class Reply { } package com.workit.part3; private int topicId; private int boardId; private int replyId; public int setTopicId(int topicId) { } public void getTopicId() { } public int setBoardId(int boardId) { } public void getBoardId() { } publicint setReplyId(int replyId) { } public void getReply() { } this.replyId = replyId; return replyId; this.boardId = boardId; return boardId; this.topicId= topicId; return topicId; public class Tip2 extends Reply{ } private String title; privateString content; private String publishTime; public String setTitle(Stringtitle) { } public void getTitle() { } public String setContent(String content) { } public void getContent() { } public StringsetpublishTime(String publicTime) { } public void getpublishTime() { }public void title() { System.out.println(\帖子标题:\\t\+this.title); }public void content() { System.out.println(\帖子内容:\\t\+this.content); } public void pudlishTime() { System.out.println(\发帖时间:\\t\+this.publishTime); } this.publishTime = publishTime; return publicTime; this.content = content; return title; this.title = title; return title;? 阶段三:? 需求说明:? 主题类、回复类重写帖子类输出信息的方法 ? 实现思路及关键代码:? 1、主题类重写getInfo()方法,输出主题信息 ? 2、回复类重写getInfo()方法,输出回复信息 ? 3、在测试类中使用多态的方式调用getInfo()方法package com.workit.part3; public class Reply { private int topicId; private int boardId; private int replyId; public int getTopicId() { } public void setTopicId(int topicId) { } public int getBoardId() { } return boardId; this.topicId = topicId; return topicId;感谢您的阅读,祝您生活愉快。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java面向对象之继承和多态作业题
2011/9/23 ●上机要求:
使用Eclipse编写主题类、回复类
要求如下:
主题类继承帖子类,并增加属性:主题id,版块id
回复类继承帖子类,并增加属性:回复id,主题id
在帖子类中实现多态
使用super调用父类构造方法
●阶段一:
⏹需求说明:
⏹创建主题类,继承帖子类
类名Topic
属性topicId:int
boardId:int
继承
类名Tip
属性title:String
content:String
publishTime:String
uid:int
方法getInfo() :void
实现思路及关键代码:
1、创建主题类:Topic,继承帖子类:Tip
2、增加以下属性
主题id:int topicId
版块id:int boardId
3、添加setter/getter方法
4、使用从帖子类继承来的getInfo()方法,输出主题信息
package com.workit.part3;
public class Topic {
private int topicId;
private int boardTd;
public Topic(int topicId, int boardTd) {
super();
this.topicId = topicId;
}
阶段二:
需求说明:
1、创建回复类:Reply ,继承帖子类:Tip
2、增加以下属性
回复id:int replyId
主题id:int topicId
3、添加setter/getter方法
package com.workit.part3;
public class Reply {
private int topicId;
private int boardId;
private int replyId;
public int setTopicId(int topicId) {
return topicId;
}
public void getTopicId()
{
this.topicId = topicId;
}
public int setBoardId(int boardId) {
return boardId;
}
public void getBoardId()
{
this.boardId = boardId;
}
public int setReplyId(int replyId) {
return replyId;
}
public void getReply()
{
this.replyId = replyId;
}
}
package com.workit.part3;
阶段三:
⏹需求说明:
◆主题类、回复类重写帖子类输出信息的方法
⏹实现思路及关键代码:
◆1、主题类重写getInfo()方法,输出主题信息
◆2、回复类重写getInfo()方法,输出回复信息
◆3、在测试类中使用多态的方式调用getInfo()方法
package com.workit.part3;
public class Reply {
private int topicId;
private int boardId;
private int replyId;
public int getTopicId() {
return topicId;
}
public void setTopicId(int topicId) {
this.topicId = topicId;
}
public int getBoardId() {
return boardId;
}
●阶段四:
⏹需求说明:
◆1、为主题类添加无参构造方法,在该方法中使用super();,并输出“主题类的
无参构造方法”
◆2、为主题类添加有参构造方法,参数同Tip类有参构造方法,在该方法中使
用super(pTitle, pContent, pTime);,并输出“主题类的有参构造方法”
◆3、使用测试类测试主题类构造方法
package com.workit.part4;
public class Main1 {
private String title;
private String content;
private String publishTime;
public String getTitle() {。