JAVA继承,接口,抽象类等练习
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编程语言中,接口(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 核心基础,适合初学者对面向对象基础的知识进行测试,以便查漏补缺。
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继承的练习题,以帮助读者加深对继承的理解和应用。
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继承的理解和应用。
练习题一:动物类和子类我们先定义一个动物类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中,接口是一种定义一组方法的抽象类型。
接口并不提供任何实现,而是定义了一系列方法的声明。
请按照以下要求完成接口的练习题。
二、题目一定义一个接口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中使用接口。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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()方法。