JAVA继承,接口,抽象类等练习

合集下载

java笔试题及答案2017

java笔试题及答案2017

java笔试题及答案2017# Java笔试题及答案20171. 题目:请解释Java中的接口和抽象类的区别。

答案: Java中的接口和抽象类都是不能被实例化的抽象类型,但它们之间存在一些关键区别:- 接口:接口可以包含常量(public static final字段),抽象方法,以及默认方法(Java 8引入)。

接口中的所有字段默认都是public static final的,所有方法默认都是public abstract的。

接口可以被多实现,一个类可以实现多个接口。

- 抽象类:抽象类可以包含构造方法,非抽象方法,静态方法,常量。

抽象类中的字段可以是任意访问修饰符。

一个类只能继承一个抽象类。

2. 题目:解释Java中的垃圾回收机制。

答案: Java的垃圾回收机制是一种自动内存管理功能,用于自动回收不再使用的对象所占用的内存。

垃圾回收器主要通过以下步骤工作:- 标记:垃圾回收器遍历所有从根对象可达的对象,标记这些对象为“活动”。

- 清除:垃圾回收器遍历堆内存,清除所有未被标记的对象。

- 压缩:可选步骤,将存活的对象移动到堆的一端,减少内存碎片。

3. 题目:在Java中,如何实现多线程?答案: Java中实现多线程可以通过以下几种方式:- 继承Thread类:创建一个继承自Thread类的子类,并重写run方法。

- 实现Runnable接口:创建一个实现了Runnable接口的类,并将Runnable对象传递给Thread类的构造函数。

- 使用Executor框架:使用Java提供的线程池管理器来管理线程。

4. 题目:请解释Java中的异常处理机制。

答案: Java的异常处理机制包括try、catch、finally和throw关键字:- try:用于定义可能抛出异常的代码块。

- catch:用于捕获try块中抛出的异常,并进行处理。

- finally:无论是否发生异常,finally块中的代码都会被执行,常用于资源清理。

java 接口的练习题

java 接口的练习题

java 接口的练习题Java接口的练习题在Java编程语言中,接口(Interface)是一种特殊的引用类型,它可以理解为一种约定或契约,用于规定类所需要实现的方法。

在本篇文章中,我们将通过一些练习题来巩固和提升对Java接口的理解和运用。

练习一:接口的基本使用请定义一个名为Shape的接口,该接口中应包含计算面积的方法和计算周长的方法。

具体要求如下:```javapublic interface Shape {double getArea();double getPerimeter();}```接下来,请创建一个名为Rectangle的类,该类实现Shape接口,并且包含长度和宽度两个属性,并分别实现计算面积和计算周长的方法。

具体要求如下:```javapublic class Rectangle implements Shape {private double length;private double width;public Rectangle(double length, double width) {this.length = length;this.width = width;}@Overridepublic double getArea() {return length * width;}@Overridepublic double getPerimeter() {return 2 * (length + width);}}```最后,请编写一个测试类,验证Rectangle类的功能是否正确。

具体要求如下:```javapublic class TestShape {public static void main(String[] args) {Rectangle rectangle = new Rectangle(5, 4);System.out.println("矩形的面积:" + rectangle.getArea());System.out.println("矩形的周长:" + rectangle.getPerimeter());}}```运行上述测试类,输出的结果应为:```矩形的面积:20.0矩形的周长:18.0```练习二:接口的多态性请在Shape接口中增加一个方法用于打印形状的信息,并在Rectangle类中对该方法进行实现。

JAVA面向对象基础测试题,继承,封装,多态等测试题

JAVA面向对象基础测试题,继承,封装,多态等测试题

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();05q.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 解析:程序执行的结果是:()。

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}11}A.1add:score=212main:score = 21 B.1add:score=202main:score = 21 C.1add:score=212main:score = 20 D.1add:score=202main:score = 20 正确答案: D 解析:3.下列代码编译或运行的结果是:()。

java继承练习题

java继承练习题

java继承练习题Java中的继承是面向对象编程中的重要概念,它允许我们创建一个类(称为子类或派生类),继承另一个类(称为父类或基类)的属性和方法。

通过继承,子类可以利用父类的代码,从而实现代码的复用和扩展。

本文将介绍一些Java继承的练习题,以帮助读者加深对继承的理解和应用。

1. 继承基本概念题(1)什么是继承?为什么使用继承?(2)Java中如何定义一个继承关系?(3)继承的优缺点是什么?2. 继承的语法练习题假设有两个类:Person和Student。

Person类具有以下属性和方法:```public class Person {protected String name;protected int age;public Person(String name, int age) { = name;this.age = age;public void introduce() {System.out.println("My name is " + name + ", I am " + age + " years old.");}}```Student类继承自Person类,并具有自己的属性和方法:```public class Student extends Person {private String school;public Student(String name, int age, String school) {super(name, age);this.school = school;}public void study() {System.out.println("I am studying at " + school + ".");}}请编写一个Java程序,创建一个Student对象,并调用introduce()和study()方法。

继承练习题

继承练习题

继承练习题一、选择题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.以下方法错误的是(A D)A 覆盖方法包括成员方法的覆盖和成员变量的覆盖B 成员方法的覆盖是多态的一种表现形式C 子类可以调用父类中被覆盖的方法D 任何方法都可以被覆盖分析:在子类中调用父类方法使用super关键字。

super.a() 就可以调用父类的a方法。

在类继承或者接口实现过程中就会涉及到成员属性以及成员函数的重写,需要注意的是,成员函数的重写是直接覆盖父类的(继承中),但是成员变量重写是不会进行覆盖的。

如果子类本身没有定义使用this关键字可以去访问父类的成员变量。

最后final修饰的方法不能被覆盖覆盖即重写和重载一起都是多态的表现形式。

(重载、重写和覆盖)override->重写(=覆盖)、overload->重载、polymorphism -> 多态override是重写(覆盖)了一个方法,以实现不同的功能。

一般是用于子类在继承父类时,重写(重新实现)父类中的方法。

重写(覆盖)的规则:1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。

3、重写的方法的返回值类型必须和被重写的方法的返回一致;4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。

6、静态方法不能被重写为非静态的方法(会编译出错)。

overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。

重载的规则:1、在使用重载时只能通过相同的方法名、不同的参数形式实现。

不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样);2、不能通过访问权限、返回类型、抛出的异常进行重载;3、方法的异常类型和数目不会对重载造成影响;对比:如果用重载,则在父类里要对应每一个子类都重载一个取得边数的方法;如果用多态,则父类只提供取得边数的接口,至于取得哪个形状的边数,怎样取得,在子类里各自实现(重写)。

java继承练习题

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()用于计算形状的面积。

java接口练习题

java接口练习题

java接口练习题一、问题描述在Java中,接口是一种定义一组方法的抽象类型。

接口并不提供任何实现,而是定义了一系列方法的声明。

请按照以下要求完成接口的练习题。

二、题目一定义一个接口Animal,包含以下方法声明:1. void eat(): 表示动物进食的方法;2. void move(): 表示动物移动的方法。

三、题目二定义一个接口Flyable,继承自Animal接口,添加以下方法声明:1. void fly(): 表示动物飞行的方法。

四、题目三定义一个类Bird,并实现Animal和Flyable接口。

在Bird类中实现以上接口的所有方法,并给出方法体。

另外,Bird类还包含一个名为name的成员变量,并提供相应的getter和setter方法。

五、题目四定义一个测试类InterfaceExercise,包含main方法。

在main方法中创建一个Bird对象,并调用其eat、move和fly方法。

同时,设置Bird对象的name属性,并使用getter方法获取其值,并将结果打印输出。

六、编写代码请按照以上题目描述的要求,编写Java代码实现题目中的各个部分。

```java// 题目一interface Animal {void eat();void move();}// 题目二interface Flyable extends Animal {void fly();}// 题目三class Bird implements Flyable {private String name;@Overridepublic void eat() {System.out.println("Bird is eating."); }@Overridepublic void move() {System.out.println("Bird is moving."); }@Overridepublic void fly() {System.out.println("Bird is flying."); }public void setName(String name) { = name;}public String getName() {return name;}}// 题目四public class InterfaceExercise {public static void main(String[] args) {Bird bird = new Bird();bird.eat();bird.move();bird.fly();bird.setName("Sparrow");String name = bird.getName();System.out.println("Bird's name is: " + name);}}```七、运行结果在命令行或IDE中运行InterfaceExercise类的main方法后,将会输出以下结果:```Bird is eating.Bird is moving.Bird is flying.Bird's name is: Sparrow```通过以上练习,你已经学会了如何定义接口、继承接口、实现接口以及如何在Java中使用接口。

java中继承关系笔试题

java中继承关系笔试题

1.在Java中,子类可以继承父类的哪些特性?
答:子类可以继承父类的所有非私有属性和方法,包括公有、受保护和默认访问级别。

此外,子类还可以继承父类的构造函数和初始化块。

2.如果一个子类要继承父类的方法,应该如何实现?
答:子类要继承父类的方法,可以使用与父类方法同名、相同参数列表和相同返回类型的方法。

如果子类想要重写父类的方法,可以使用@Override注解来标记。

3.什么是多态性?在Java中如何实现多态性?
答:多态性是指一个接口可以有多种实现方式,或者一个对象可以有多种形态。

在Java中,多态性可以通过继承和接口实现。

子类可以继承父类的属性和方法,也可以实现接口的规范,从而让一个对象在不同上下文中表现出不同的行为。

4.如果一个子类要继承父类的构造函数,应该如何实现?
答:如果一个子类要继承父类的构造函数,可以在子类的构造函数中通过super关键字调用父类的构造函数。

如果子类没有显式地定义构造函数,则会自动调用父类的无参构造函数。

5.什么是抽象类?在Java中如何定义抽象类?
答:抽象类是一个不能被实例化的类,它只能作为其他类的基类。

抽象类可以包含抽象方法和非抽象方法。

在Java中,使用abstract关键字来定义抽象类,抽象类不能被实例化,但可以被继承。

如果一个子类继承了一个抽象类,那么它必须实现该抽象类中的所有抽象方法。

JAVA复习习题(继承)

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. Java语言的类间的继承关系是A) 多重的B) 单重的C) 线程的D) 不能继承2. 以下关于Java语言继承的说法正确的是A)Java中的类可以有多个直接父类B)抽象类不能有子类C)Java中的接口支持多继承D)最终类可以作为其它类的父类3. 现有两个类A、B,以下描述中表示B继承自A的是A) class A extends B B) class B implements AC) class A implements B D) class B extends A4. 下列选项中,用于定义接口的关键字是A)interface B) implements C) abstract D) class5. 下列选项中,用于实现接口的关键字是A)interface B) implements C) abstract D) class二、填空题1. 如果子类中的某个变量的变量名与它的父类中的某个变量完全一样,则称子类中的这个变量________了父类的同名变量。

2. 属性的隐藏是指子类重新定义从父类继承来的__________。

3. 如果子类中的某个方法的名字、返回值类型和________与它的父类中的某个方法完全一样,则称子类中的这个方法覆盖了父类的同名方法。

4. Java 仅支持类间的____重继承。

5. 抽象方法只有方法头,没有________。

6. Java 语言的接口是特殊的类,其中包含______常量和_______方法。

7. 接口中所有属性均为_________、_________和________的。

(public、static、final)三、程序阅读题1.现有类说明如下,请回答问题:public class A{String str1=" Hello! \t";String str2=" How are you? ";public String toString( ){ return str1+str2; }}public class B extends A{String str1="\b\b,Bill.";public String toString( ){ return super.str1+str1; }}问题:1)类A和类B是什么关系?2)类A和类B都定义了str1属性和方法toString( ),这种现象分别称为什么?3)若a是类A的对象,则a.toString( )的返回值是什么?4)若b是类B的对象,则b.toString( )的返回值是什么?2.现有一个类定义如下,请回答问题:class Employee{String name;int age;double wage;static int No=0;Employee(String a1,int a2,double a3){name=a1; age=a2; wage=a3;No++;}在使用该类时,已使用下面语句生成了该类的对象:Employee e1,e2;e1=new Employee("王劲",26,6300);e2=new Employee("张山",30,3800);问题:1)/doc/cb9160778.html,,e2.age,e2.wa ge的值各是什么?2)生成对象e1、e2后,e1.No值为多少?能否通过类名做前缀引用属性No?3.阅读程序,回答问题。

java练习题继承

java练习题继承

一.e x t e n d s和s u p e r的使用和方法的重写1.定义一个人的类(属性有名字,年龄。

写一个能输出各个属性值的方法showInfo()),定义一个学生类(属性有性别),学生继承人类要求:(1)父类的属性赋值用构造方法来实现(分别用有参数构造方法和无参数构造方法实现)(2)子类的属性也用构造方法来赋值。

(3)在子类中重写父类的showInfo()方法(4)声明学生类的对象,调用学生的显示信息的方法。

2定义Animal父类,含有属性name,sex,age,方法sleep,run,编写一个子类Person,继承Animal类,然后调用父类的属性和方法二.1、试编写三个具有继承关系的类,A、B、C(B继承A,C继承B)。

要求A中包含方法a1()、a2(),B类中的方法b1()访问了a1()和a2(),C类中的方法c1()访问了a1()、a2()、b1()。

提示:(a1(),a2(),b1(),c1()这些方法体除了实现题目要求之外,其余内容可以任意编写。

)2、请编码实现动物世界的继承关系:动物(Animal)具有行为:吃(eat)、睡觉(sleep)动物包括:兔子(Rabbit),老虎(Tiger)这些动物吃的行为各不相同(兔子吃草,老虎吃肉);但睡觉的行为是一致的。

请通过继承实现以上需求,并编写测试类AnimalTest进行测试。

3、父类Person包含like()方法子类Son重写父类方法并打印输出4、(选做)父类Employee属性:name、sex,带一个构造方法Employee(Stringn,chars)子类Worker继承自Employee属性:charcategory;法()可以调用父类的所有非私有方法B)super()可以调用父类的所有非私有构造函数C)super.属性可以调用父类的所有非私有属性D)this和super关键字可以出现在同一个构造函数中8.以下关于final关键字说法错误的是(A,C)(两项)A)final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性B)final修饰的类肯定不能被继承C)final修饰的方法不能被重载D)final修饰的变量不允许被再次赋值9.访问修饰符作用范围由大到小是(D)A)private-default-protected-publicB)public-default-protected-privateC)private-protected-default-publicD)public-protected-default-private10.以下(D)不是Object类的方法A)clone()B)finalize()C)toString()D)hasNext()11.多态的表现形式有(A)A)重写B)抽象C)继承D)封装12.以下对重载描述错误的是(B)A)方法重载只能发生在一个类的内部B)构造方法不能重载C)重载要求方法名相同,参数列表不同D)方法的返回值类型不是区分方法重载的条件13.以下(D)添加到ComputerBook中不会出错classBook{protectedintgetPrice(){return30;}} publicclassComputerBookextendsBook{}A)protectedfloatgetPrice(){}B)protectedintgetPrice(intpage){}C)intgetPrice(){}D)publicintgetPrice(){return10;}14.以下对抽象类的描述正确的是(C)A)抽象类没有构造方法B)抽象类必须提供抽象方法C)有抽象方法的类一定是抽象类D)抽象类可以通过new关键字直接实例化15.以下对接口描述错误的有(D)A)接口没有提供构造方法B)接口中的方法默认使用public、abstract修饰C)接口中的属性默认使用public、static、final修饰D)接口不允许多继承16.以下代码,描述正确的有(A)interfaceIDemo{ publicstaticfinalStringname;1voidprint();2publicvoidgetInfo();3} abstractclassPersonimplementsIDemo{4 publicvoidprint(){}}A)第1行错误,没有给变量赋值B)第2行错误,方法没有修饰符C)第4行错误,没有实现接口的全部方法D)第3行错误,没有方法的实现17.接口和抽象类描述正确的有(B,C)(两项)A)抽象类没有构造函数B)接口没有构造函数C)抽象类不允许多继承D)接口中的方法可以有方法体18.以下描述错误的有(C)A)abstract可以修饰类、接口、方法B)abstract修饰的类主要用于被继承C)abstract可以修饰变量D)abstract修饰的类,其子类也可以是abstract修饰的19.以下描述正确的有(B)A)方法的重写应用在一个类的内部B)方法的重载与返回值类型无关C)构造方法不能重载D)构造方法可以重写20.以下程序运行结果是(A)publicclassTestextendsFather{privateStringname=”test”;publicstaticvoidmain(String[]args){Testtest=newFather{privateStringname=”father”;publicStringgetName(){returnname;}}A)fatherB)testC)编译出错D)运行出错,无输出21.以下对异常的描述不正确的有(C)A)异常分为Error和ExceptionB)Throwable是所有异常类的父类C)Exception是所有异常类父类D)Exception包括RuntimeException和RuntimeException之外的异常22.在try-catch-finally语句块中,以下可以单独与finally一起使用的是(B)A)catchB)tryC)throwsD)throw23.下面代码运行结果是(B)publicclassDemo{publicintadd(inta,intb){try{returna+b;}catch(Exception语句块”);}return0;}publicstaticvoidmain(String[]args){Demodemo=new编译异常B)finally语句块和是:43C)和是:43finally语句块D)catch语句块和是:4324.以下描述不正确的有(D)A)try块不可以省略B)可以使用多重catch块C)finally块可以省略D)catch块和finally块可以同时省略25.以下对自定义异常描述正确的是(C)A)自定义异常必须继承ExceptionB)自定义异常可以继承自ErrorC)自定义异常可以更加明确定位异常出错的位置和给出详细出错信息D)程序中已经提供了丰富的异常类,使用自定义异常没有意义26.以下程序运行结果是(D)publicclassTest{publicintdiv(inta,intb){try{returna/b;}catch(Exception(ArithmeticExceptione)finally0;}publicstaticvoidmain(String[]args){Testdemo=new+(9,0));}}A)Exceptionfinally商是:0B)ArithmeticExceptionfinally商是:0C)finally商是:0D)编译报错27.以下对TCP和UDP描述正确的是(D)A)TCP不能提供数据的可靠性B)UDP能够保证数据库的可靠性C)TCP数据传输效率高于UDPD)UDP数据传输效率高于TCP28.在Java中,下面对于构造函数的描述正确的是(D)。

JAVA继承,接口,抽象类等练习

JAVA继承,接口,抽象类等练习

一、选择题1、为了区分重载多态中同名的不同方法,要求(A )。

A) 采用不同的参数列表B) 返回值类型不同C) 调用时用类名或对象名做前缀D) 参数名不同2、定义主类的类头时可以使用的访问控制符是( C)。

A) private B) protected C) public D) private protected3、下列整型的常量属性i 的定义中,正确的是( A)。

A) static final int i=100; B) final int i;C) static int i; D) final float i=1.2f;4、设x,y 均为已定义的类名,下列声明对象x1的语句中正确的是( C)。

A) public x x1= new y( ); B) x x1=x( );C) x x1=new x( ); D) int x x1;5、下列方法定义中,正确的是( D)。

A) int x( int a,b ) B) double x( int a,int b){ return (a-b); } { int w; w=a-b; }C) double x( a,b ) D) int x( int a,int b){ return b; } { return a-b; }6、为了使包sos在当前程序中可见,可以使用的语句是( A)。

A)import sos.*; B)package sos.*;C)sos import; D)sos package;7、设i、j、k 为类x 中定义的int 型变量名,下列类x 的构造函数中正确的是( )。

A) x( int m){ ... } B) void x( int m){ ... }C) x( int m, int n){ ... } D) x( int h,int m,int n){ ... }8、下列类头定义中,正确的是( )。

CA) class x B) public x extends y{ .... } { .... }C) public class x extends y D) class x extends y implements y1{ .... } { .... }9、下面是有关子类继承父类构造函数的描述,其中正确的是(C )。

java面向对象编程、类的封装、接口和基本类库练习题

java面向对象编程、类的封装、接口和基本类库练习题

面向对象编程基本知识练习一、判断题1.不需要定义类,就能创建对象。

()2.构造方法用于给类的private 实例变量赋值。

()3.对象一经声明就可以立即使用。

()4.在定义变量和方法时,必须清楚地在其面前标上访问权限修饰符。

()5.Java 程序中的参数传递都是把参数值传递给方法定义中的参数。

()6.在类定义中,成员访问权限修饰符不能多次出现。

()7.new 操作符动态地为对象按其指定的类型分配内存,并返回该类型的一个引用。

()8.类的方法通常设为public,而类的实例变量一般也设为public。

()9.构造方法在创建对象时被调用。

()10.通过点运算符与类对象的引用相连,可以访问此类的成员。

()11.声明为protected 的类成员只能被此类中的方法访问。

()12.同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间。

()13.类的成员变量可以放在类体的任意位置。

()14.声明为protected 的类成员可以被此类作用域中的任何对象访问。

()15.没有返回值的方法可以用void 来表示,也可以不加。

()二、选择题1. 下面对对象概念描述错误的是:( )A 操作是对象的动态属性B 任何对象都必须有继承性C 对象间的通讯靠消息传递D 对象是属性和方法的封装体2.编译并运行下面的程序,运行结果为:( )public class A{public static void main(String[] args){A a=new A();a.method(8);}void method(int i){System.out.println(“int:“+i);}void method(long i){System.out.println(“long:“+i);}}A 程序可以编译运行,输出结果为int:8B 程序可以编译运行,输出结果为long:8C 程序有编译错误,因为两个method()方法必须定义为静态(static)的D 程序可以编译运行,但没有输出3.下面关于类的说法不正确的是:()A 类是Java 语言中的一种复合数据类型B 类中不包含数据变量和方法C 类是对所有具有一定共性的对象的抽象D Java 语言的类只支持单继承4.能作为类及其成员的修饰符是:()A interfaceB classC protectedD public5.设x、y 均为已定义的类名,下列声明对象x1 的语句不可能正确的是:()A public x xl=new y();B public y xl=new x();C x xl=new x();D x xl=x();6.面向对象程序设计技术的特点是:()A 可重用性B 可维护性C 表示方法的一致性D 可重用性、可维护性、表示方法的一致性7.下列方法定义中,方法头不正确的是:()A public static x(double a){…}B public static int x(double y){…}C void x(double d)D public int x(){…}8.设已声明了一个类A 的两个对象al、a2,为了初始化a1 和a2,下面语句正确的是:()A al=new(); a2=new();B al=A new(); a2=A new();C al,a2=new A();D al=new A(); a2=new A();9.构造方法何时被调用?()A 类定义时B 使用对象的变量时C 调用对象方法时D 创建对象时10.下列哪个类声明是正确的?()A public abstract class Car{…}B abstract private move(){…}C protected private number;D abstra ct final class Hl{…}11.下列不属于面向对象程序设计的基本特征的是:()B 封装C 继承D 静态12.请看下面的程序段class Person {String name,department;int age;public Person(String n) { name = n; }public Person(String n,int a) { name = n; age = a; }public Person(String n,String d,int a) {//doing the same as two arguments version of constructer//including assignment name=n,age=a}}下面那一选项可以添加到“//doing the same……”处:()A Person(n,a)B this(Person(n,a))C this(n,a)D this(name.age)13.()是一个特殊的方法,用于对类的实例变量进行初始化。

接口和抽象类习题-答案

接口和抽象类习题-答案

接口和抽象类习题-答案(一)选择题1.以下哪个接口的定义是正确的?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();}2.定义一个接口时,下列哪个关键字用不到?A.publicB.extendsC.interfaceD.class3.定义一个接口时,要使用如下哪个关键字?A.abstractB.finalC.interfaceD.class4.在使用interface声明一个接口时,只可以使用哪个修饰符修饰该接口。

A.privateB.protectedC.private或者protectedD.public5.下列类头定义中,错误的是 ?A.public x extends yB.public class x extends yC.class x extends y implements y1D.class x6.下列类定义中,不正确的是?A.class xB.class x extends yC.class x implements y1,y2D.public class x extends X1,X27.Java中能实现多重继承功能的方式是?A.接口B.同步C.抽象类D.父类8.下列叙述正确的是?A.Java中允许多重继承B.Java一个类只能实现一个接口C.Java中只能单重继承D.Java中一个类可以继承多个抽象类(二)简答题1)接口中方法的修饰符都有哪些?属性的修饰符有哪些?2)接口的作用是什么?简述接口与类的关系。

3)请写出下列输出结果。

interface A {int x = 1;void showX();}interface B {int y = 2;void showY();}class InterfaceTest implements A, B {int z = 3;public void showX() {System.out.println("x=" + x);}public void showY() {System.out.println("y=" + y);}public void showMe() {System.out.println("z=" + (z + x + y));}}public class Class1 {public static void main(String[] args) {InterfaceTest myObject = new InterfaceTest();myObject.showX();myObject.showY();myObject.showMe();}}X=1Y=2Z=6(三)编程题1)定义一个有抽象方法display()的超类SuperClass,以及提供不同实现方法的子类SubClassA和SubClassB,并创建一个测试类PolyTester,分别创建SubClassA和SubClassB的对象。

java 继承练习题

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 继承多态接口选择题

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笔试题及答案

java笔试题及答案

java笔试题及答案题目:Java 笔试题及答案一、基础语法1. 请解释 Java 中的接口和抽象类的区别。

答:接口(Interface)是一种完全抽象的类,它允许声明方法,但不允许实现这些方法。

接口中的方法默认是 public 和 abstract 的,且从 Java 8 开始,接口也可以包含默认方法和静态方法。

抽象类(Abstract Class)可以包含抽象方法和非抽象方法,允许有构造器,成员变量,以及具体的方法实现。

一个类可以实现多个接口,但只能继承一个抽象类。

2. 请解释 Java 中的集合框架。

答:Java 集合框架是 Java 中存储和处理一组对象的一套标准接口和类。

集合框架分为两大类:不包含重复元素的集合(如 List、Set)和可能包含重复元素的集合(如 Map、Bag)。

集合框架提供了一系列的接口和实现类,如 List 接口的实现类有 ArrayList 和LinkedList,Set 接口的实现类有 HashSet 和 TreeSet 等。

二、面向对象1. 请解释封装、继承和多态的概念。

答:封装是将对象的状态信息隐藏在对象内部,并通过公共方法对外提供服务。

继承允许新的类(子类)继承现有类(父类)的属性和方法,实现代码的复用。

多态是指允许使用子类的对象来替代父类的对象,子类可以重写父类的方法,从而在运行时表现出不同的行为。

2. 请解释抽象类和接口在实现多态中的作用。

答:抽象类通过定义抽象方法来规定子类必须实现的功能,而接口则通过声明方法签名来规定实现类必须提供的方法实现。

抽象类和接口都可以被子类继承或实现,这样可以确保子类具有某些共同的行为,是实现多态的基础。

三、异常处理1. 请解释 Java 中的异常处理机制。

答:Java 中的异常处理机制是通过 try-catch-finally 结构来实现的。

当 try 块中的代码可能会抛出异常时,catch 块用来捕获并处理这些异常。

java考试题上机及答案大一

java考试题上机及答案大一

java考试题上机及答案大一1. 请解释Java中的继承机制,并举例说明如何使用继承来实现代码的复用。

答案:Java中的继承机制允许一个类(称为子类)继承另一个类(称为父类)的属性和方法。

继承的主要目的是实现代码的复用。

例如,如果有一个父类`Animal`,它有`eat()`和`sleep()`方法,我们可以创建一个子类`Dog`继承`Animal`类,这样`Dog`类就会自动拥有`eat()`和`sleep()`方法,而不需要重新编写这些方法。

2. Java中接口和抽象类有什么区别?答案:Java中的接口和抽象类都是用来实现代码的抽象化和模块化的。

接口可以包含抽象方法和默认方法,但不能包含实现细节。

而抽象类可以包含抽象方法和具体方法,以及成员变量。

接口中的所有成员默认都是public的,而抽象类可以有private、protected等访问修饰符。

一个类可以实现多个接口,但只能继承一个抽象类。

3. 请写出一个Java程序,该程序可以计算并输出100以内所有偶数的和。

答案:```javapublic class EvenSum {public static void main(String[] args) {int sum = 0;for (int i = 2; i <= 100; i += 2) {sum += i;}System.out.println("100以内所有偶数的和为:" + sum); }```4. 在Java中,如何声明一个字符串变量并初始化它?答案:在Java中,可以使用`String`关键字来声明一个字符串变量,并通过双引号来初始化它。

例如:```javaString myString = "Hello, World!";```5. 请解释Java中的多态性,并给出一个多态性的示例。

答案:Java中的多态性是指同一个方法调用,根据发送对象的不同,可以有不同的行为。

java编程练习题及答案

java编程练习题及答案

java编程练习题及答案Java编程练习题及答案一、选择题1. 在Java中,哪个关键字用于定义类?A. classB. interfaceC. enumD. struct答案:A2. 下列哪个是Java中的合法标识符?A. 2variableB. forC. variable2D. class答案:C3. 在Java中,哪个方法用于获取当前对象的引用?A. this()B. super()C. clone()D. new()答案:A4. 以下哪个是Java的访问修饰符?A. publicB. staticC. finalD. abstract答案:A5. 在Java中,哪个关键字用于定义接口?A. classB. interfaceC. abstractD. enum答案:B二、简答题1. 请简述Java中的继承是如何工作的?答案:Java中的继承允许一个类(子类)继承另一个类(父类)的属性和方法。

子类可以扩展或修改父类的行为,实现代码复用。

继承是面向对象编程的核心概念之一。

2. 请解释Java中接口和抽象类的区别?答案:接口定义了一组方法规范,但不提供实现。

任何实现接口的类都必须提供接口中所有方法的具体实现。

抽象类可以包含抽象方法和具体方法,并且可以有成员变量。

抽象类可以作为其他类的基类,但不能被实例化。

三、编程题1. 编写一个Java程序,实现一个简单的计算器,可以进行加、减、乘、除运算。

```javaimport java.util.Scanner;public class SimpleCalculator {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入第一个数字: ");double num1 = scanner.nextDouble();System.out.print("请选择运算符(+, -, *, /): "); char operator = scanner.next().charAt(0);System.out.print("请输入第二个数字: ");double num2 = scanner.nextDouble();double result = 0;switch (operator) {case '+':result = num1 + num2;break;case '-':result = num1 - num2;break;case '*':result = num1 * num2;break;case '/':if (num2 != 0) {result = num1 / num2;} else {System.out.println("除数不能为0"); }break;default:System.out.println("无效的运算符");}if (result != 0) {System.out.println("结果是: " + result);}scanner.close();}}```2. 编写一个Java程序,实现一个简单的学生管理系统,可以添加学生信息、显示所有学生信息。

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

一、选择题1、为了区分重载多态中同名的不同方法,要求(A )。

A) 采用不同的参数列表B) 返回值类型不同C) 调用时用类名或对象名做前缀D) 参数名不同2、定义主类的类头时可以使用的访问控制符是( C)。

A) private B) protected C) public D) private protected3、下列整型的常量属性i 的定义中,正确的是( A)。

A) static final int i=100; B) final int i;C) static int i; D) final float i=1.2f;4、设x,y 均为已定义的类名,下列声明对象x1的语句中正确的是( C)。

A) public x x1= new y( ); B) x x1=x( );C) x x1=new x( ); D) int x x1;5、下列方法定义中,正确的是( D)。

A) int x( int a,b ) B) double x( int a,int b){ return (a-b); } { int w; w=a-b; }C) double x( a,b ) D) int x( int a,int b){ return b; } { return a-b; }6、为了使包sos在当前程序中可见,可以使用的语句是( A)。

A)import sos.*; B)package sos.*;C)sos import; D)sos package;7、设i、j、k 为类x 中定义的int 型变量名,下列类x 的构造函数中正确的是( )。

A) x( int m){ ... } B) void x( int m){ ... }C) x( int m, int n){ ... } D) x( int h,int m,int n){ ... }8、下列类头定义中,正确的是( )。

CA) class x B) public x extends y{ .... } { .... }C) public class x extends y D) class x extends y implements y1{ .... } { .... }9、下面是有关子类继承父类构造函数的描述,其中正确的是(C )。

A) 创建子类的对象时,先调用子类自己的构造函数,然后调用父类的构造函数。

B) 子类无条件地继承父类不含参数的构造函数。

C) 子类通过super关键字调用父类的构造函数。

D) 子类无法继承父类的构造函数。

10、下面说法正确的是(A )。

A) final 可修饰类、属性、方法。

B) abstract可修饰类、属性、方法。

C) 定义抽象方法需有方法的返回类型、名称、参数列表和方法体。

D) 用final修饰的变量,在程序中可对这个变量的值进行更改。

11、现有两个类A、B,以下描述中表示B继承自A的是(D )。

A) class A extends B B) class B implements AC) class A implements B D) class B extends A12、Java中的每一个类:A CA)只能有一个父类B)可以有多个父类C)可以没有父类D)只能实现一个接口13、以下程序运行结果是:Apublic class FatherClass{public FatherClass(){System.out.print ("Father ");}}public class ChildClass extends FatherClass {public ChildClass() {System.out.print ("Child ");}public static void main(String[] args) {FatherClass fc = new ChildClass();}}A) FatherChild B) ChildC) Father D) 出错15、同一类中有两个以上方法同名称方法重载,Java语言规定:CA)不允许重载;B)父类的方法与子类的方法不构成重载;C)重载方法的参数表必须不同;D)重载方法的返回值类型必须不同。

16、下述关于继承的说法正确的是:CA)要从一个父类派生出一个子类,就要将父类代码全部复制过来,再添上子类特有的代码。

B)声明继承某个父类就意味着可以使用父类的全部非private变量和方法。

C)被继承的父类代码必须与子类代码在同一个源代码文件(.java文件)内。

D)父类的字节码文件(.class文件)必须与子类的字节码文件放在同一文件夹中。

17、关于在子类中调用父类构造方法的问题,下述说法正确的是:BA)子类构造方法一定要调用父类的构造方法;B)子类构造方法只能在第一条语句调用父类的构造方法;C)调用父类构造方法的方式是:父类名(参数表);D)默认情况下子类的构造方法将调用父类的无参数构造方法。

19、子类中定义的方法与父类方法同名且同形时称父类方法被复盖(也称重写)以下说法正确的是:CA)父类对象调用的也是子类的方法;B)在子类中仍可用super.方法名调用父被复盖的方法;C)父类中用final修饰的方法不允许被复盖;D)子类方法必须与父类被重写的方法在访问权限、返回值类型、参数表等方面完全一致。

20、用abstract修饰的类称为抽象类,它们:AA)只能用以派生新类,不能用以创建对象;B)只能用以创建对象,不能用以派生新类;C)既可用以创建对象,也可用以派生新类;D)既不能用以创建对象,也不可用来派生新类。

21、类中的某个方法是用final修饰的,则该方法:CA)是虚拟的,没有方法体;B)是最终的,不能被子类继承;C)不能用被子类同名方法复盖;D)不能用被子类其它方法调用。

22、一个类中,用static修饰的变量称静态变量:DA)同一时刻,该类的所有对象中该变量值都相同;B)所有对象中的方法都不能对该变量进行赋值操作;C)其值不能改变;D)与实例变量一样,每个对象中的值互相独立。

23、一个类中,用static修饰的方法称静态方法:BA)该类中其它方法不能调用它;B)它不能直接调用类中其它不用static修饰的方法;C)没有用类创建对象之前,类外无法调用该方法;D)类外调用该方法的方式必须是:对象名.方法名(实参数据)。

24、在定义一个类时,若希望某个成员方法调用范围是同一包内所有类,其修饰词应为:ACDA)public B)private C)protected D)默认25、关于接口以下说法正确的是:A CA)接口中的变量必须用public static final三个修饰词修饰;B)接口中的方法必须用public abstract两个修饰符修饰;C)一个接口可以继承多个父接口;D)接口的构造方法名必须为接口名。

26、以下关于接口对象的说法中正确的是:A)接口只能被类实现,不能用来声明对象;B)接口对象可以用关键词new创建;C)接口对象可以等于任何类的对象;D)接口对象只能等于实现该接口的类的对象;27、若有如下接口A的定义,下列哪些类下确实现了该接口Cinterface A {void method1(int i);void method2(int j);}A)class B implements A{void method1( ) { }void method2( ) { }}B)class B {void method1(int i ) { }void method2(int j ) { }}C)class B implements A {void method1(int i ) { }void method2(int j ) { }}D)class B implements A{public void method1(int x ) { }public void method2(int y ) { }}28、关于Java中包的概念,以下正确的是:A)包是一些类与接口的集合;B)J ava的包中可以包含子包;C)包中的类与子包中的类被认为是同一包内;D)包中的类不能访问子包中非public的类。

30、关于以下程序叙述正确的是:Aclass Base {Base(int i){System.out.print(“Base ”);}}class Test extends Base{Test ( ){System.out.print(“Test ”);}public static void main(String[] args){Test b = new Test();}}A)程序运行出错,因为Base类未定义构造方法;B)程序运行正常,输出Base ;C)程序运行正常,输出Base Test ;D)程序运行正常,但无输出。

二、编程练习【练习题】Static关键字与普通变量的区别:创建一个名称为StaticDemo的类,并声明一个静态变量和一个普通变量。

对变量分别赋予10和5的初始值。

在main()方法中输出变量值。

【练习题】覆盖、继承建立一个汽车Auto类,包括轮胎个数,汽车颜色,车身重量、速度等成员变量。

并通过不同的构造方法创建实例。

至少要求:汽车能够加速,减速,停车。

再定义一个小汽车类Car,继承Auto,并添加空调、CD等成员变量,覆盖加速,减速的方法【练习题】抽象类与继承设计一个能细分为矩形、三角形、圆形和椭圆形的“图形”类。

使用继承将这些图形分类,找出能作为基类部分的共同特征(如校准点)和方法(如画法、初始化),并看看这些图形是否能进一步划分为子类。

本题只考虑实现思想,不考虑具体实现的细节,实现方式可自由发挥。

【练习题】抽象类:创建一个Vehicle类并将它声明为抽象类。

在Vehicle类中声明一个NoOfWheels 方法,使它返回一个字符串值。

创建两个类Car和Motorbike从Vehicle类继承,并在这两个类中实现NoOfWheels方法。

在Car类中,应当显示“四轮车”信息;而在Motorbike类中,应当显示“双轮车”信息。

创建另一个带main方法的类,在该类中创建Car和Motorbike的实例,并在控制台中显示消息。

【练习题】接口:创建一个名称为Vehicle的接口,在接口中添加两个带有一个参数的方法start()和stop()。

在两个名称分别为Bike和Bus的类中实现Vehicle接口。

创建一个名称为interfaceDemo的类,在interfaceDemo的main()方法中创建Bike和Bus对象,并访问start()和stop()方法。

相关文档
最新文档