java练习题-继承
- 格式:docx
- 大小:19.43 KB
- 文档页数:12
(一)选择题1)若在某一个类定义中定义有如下的方法:final void workDial( )该方法属于A.本地方法B.最终方法C.静态方法D.抽象方法2)下面哪个方法与题目中的不是重载方法public int max(int x,int y)A.public double max(double x,double y)B.public int max(int n,int k)C.public int max(int x,int y, int z)D.public double max(double n,double k)3)为了区分类中重载的同名的不同方法,要求A.参数列表不同B.调用时用类名或对象名做前缀C.参数名不同D.返回值类型不同4)某个类中存在一个方法:void getSort(int x),以下能作为该方法的重载的声明的是?A.public getSort(float x)B.double getSort(int x,int y)C.int getSort(int y)D.void get(int x,int y)5)A派生出子类B ,B派生出子类C,并且在Java源代码中有如下声明:A a0=new A();A a1 =new B();A a2=new C();问以下哪个说法是正确的?A.只有第1行能通过编译B.第1、2行能通过编译,但第3行编译出错C.第1、2、3行能通过编译,但第2、3行运行时出错D.第1行、第2行与第3行的声明都是正确的6)设有下面两个类的定义。
class Person {long id; // 身份证号String name; // 姓名class Student extends Person {int score; // 入学总分}int getScore() {return score;则类Person与类Student的关系是?A.包含关系B.继承关系C.关联关系D.上述类定义有语法错误7)下列叙述中,正确的是?A.子类继承父类的所有属性与方法B.子类可以继承父类的私有的属性与方法C.子类可以继承父类的公有的属性与方法D.创建子类对象时,父类的构造方法都要被执行8)现有两个类A、B,以下描述中表示B继承自A的是?A.class A extends BB.class B implements AC.class A implements BD.class B extends A9)下列叙述中错误的是?A.一个子类可有多个父类B.父类派生出子类C.子类继承父类D.子类只能有一个父类10)关于继承下面说法正确的是A.子类能够继承父类私有的属性;B.子类可以重写父类的final方法;C.子类能够继承不同包父类的protected属性;D.子类能够继承不同包父类的缺省属性;11)有名字为A的包与名为B的类,下面的语句正确的是A.package A.B;B.package B;C.import A.* ;D.import B;12)声明一个名字为P的包,下面的语句正确的是A.package Pkg;B.Package P;C.package P;D.package "p";13)导入包A中的类AA应该使用下面哪条语句?A.import A.AA ;B.import AA.A;C.package A;D.package AA;14)下列针对int类型的私有属性age的访问器方法格式正确的是?A.void getAge(int age)B.int getAge(int age)C.void setAge(int age)D.int setAge()15)下列关于访问器方法说法正确的是?A.get方法可以读取属性的值B.set方法用来读取属性的值C.必须为每个private属性提供访问器方法D.public属性不能有访问器方法16)表示数据或方法可以只能被定义它的类访问的是A.publicB.默认的C.privateD.protected17)表示数据或方法只能被其它包中的子类访问的是A.publicB.默认的C.privateD.protected18)对于子类的构造函数说明,下列叙述中不正确的是?A.子类无条件地继承父类的无参构造函数B.子类可以在自己的构造函数中使用super关键字来调用父类的含参数构造函数,但这个调用语句必须是子类构造函数的第一个可执行语句C.在创建子类的对象时,将先执行继承自父类的无参构造函数,然后再执行自己的构造函数D.子类不但可以自动执行父类的无参构造函数,也可以自动执行父类的有参构造函数19)当你编译运行下列程序代码,会得到什么结果?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.输出200C.输出100与200D.输出100(二)简答题1)简述修饰类的可见性修饰符有哪些及其作用?2)简述修饰类的成员的可见性修饰符有哪些及其作用?3)导入包时可导入其他包中哪些类?如何导入包p中的全部可以使用的类,请写出语句?4)包的作用是什么?如何声明一个包?5)写出set与get方法定义的格式。
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()方法。
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)。
继承java练习题继承是Java中重要的概念之一,它允许我们创建具有共同特征的类,并在其基础上构建更具体的子类。
通过继承,我们可以实现代码的重用,提高程序的灵活性和可维护性。
在本文中,我将通过一些继承的Java练习题来帮助读者更好地理解和应用这一概念。
首先,让我们考虑一个简单的例子。
假设我们有一个名为Animal的父类,它有一个名为eat()的方法,用于描述动物吃东西的行为。
现在,我们想要创建一个子类Dog,它继承自Animal类,并具有自己特有的行为,比如bark()。
我们可以通过以下代码来实现:```javaclass Animal {public void eat() {System.out.println("Animal is eating.");}}class Dog extends Animal {public void bark() {System.out.println("Dog is barking.");}}```在这个例子中,Dog类继承了Animal类的eat()方法,并添加了自己的bark()方法。
通过创建Dog类的对象,我们可以调用这些方法:```javaDog dog = new Dog();dog.eat(); // 输出 "Animal is eating."dog.bark(); // 输出 "Dog is barking."```这个例子展示了继承的基本用法。
子类可以继承父类的属性和方法,并且还可以添加自己特有的属性和方法。
这使得我们可以更好地组织和扩展代码。
接下来,让我们来考虑一个稍微复杂一些的继承问题。
假设我们要设计一个图形类,其中包括一个计算面积的方法。
我们可以创建一个名为Shape的父类,它有一个名为calculateArea()的方法。
然后,我们可以创建几个子类,比如Rectangle和Circle,它们分别继承自Shape类,并实现自己特有的计算面积的方法。
继承练习题一、选择题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()`。
java基础-继承-练习集锦1.下⾯这段代码的输出结果是什么?ublic class Test {public static void main(String[] args) {new Circle();}}class Draw {public Draw(String type) {System.out.println(type+" draw constructor");}}class Shape {private Draw draw = new Draw("shape");public Shape(){System.out.println("shape constructor");}}class Circle extends Shape {private Draw draw = new Draw("circle");public Circle() {System.out.println("circle constructor");}}这道题⽬主要考察的是类继承时构造器的调⽤顺序和初始化顺序。
要记住⼀点:⽗类的构造器调⽤以及初始化过程⼀定在⼦类的前⾯。
由于Circle类的⽗类是Shape类,所以Shape类先进⾏初始化,然后再执⾏Shape类的构造器。
接着才是对⼦类Circle进⾏初始化,最后执⾏Circle的构造器。
2.下⾯这段代码的输出结果是什么?public class Test {public static void main(String[] args) {Shape shape = new Circle();System.out.println();shape.printType();shape.printName();}}class Shape {public String name = "shape";public Shape(){System.out.println("shape constructor");}public void printType() {System.out.println("this is shape");}public static void printName() {System.out.println("shape");}}class Circle extends Shape {public String name = "circle";public Circle() {System.out.println("circle constructor");}public void printType() {System.out.println("this is circle");}public static void printName() {System.out.println("circle");}}这道题主要考察了隐藏和覆盖的区别覆盖只针对⾮静态⽅法(终态⽅法不能被继承,所以就存在覆盖⼀说了),⽽隐藏是针对成员变量和静态⽅法的。
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()用于计算形状的面积。
1.在Java中,子类可以继承父类的哪些特性?
答:子类可以继承父类的所有非私有属性和方法,包括公有、受保护和默认访问级别。
此外,子类还可以继承父类的构造函数和初始化块。
2.如果一个子类要继承父类的方法,应该如何实现?
答:子类要继承父类的方法,可以使用与父类方法同名、相同参数列表和相同返回类型的方法。
如果子类想要重写父类的方法,可以使用@Override注解来标记。
3.什么是多态性?在Java中如何实现多态性?
答:多态性是指一个接口可以有多种实现方式,或者一个对象可以有多种形态。
在Java中,多态性可以通过继承和接口实现。
子类可以继承父类的属性和方法,也可以实现接口的规范,从而让一个对象在不同上下文中表现出不同的行为。
4.如果一个子类要继承父类的构造函数,应该如何实现?
答:如果一个子类要继承父类的构造函数,可以在子类的构造函数中通过super关键字调用父类的构造函数。
如果子类没有显式地定义构造函数,则会自动调用父类的无参构造函数。
5.什么是抽象类?在Java中如何定义抽象类?
答:抽象类是一个不能被实例化的类,它只能作为其他类的基类。
抽象类可以包含抽象方法和非抽象方法。
在Java中,使用abstract关键字来定义抽象类,抽象类不能被实例化,但可以被继承。
如果一个子类继承了一个抽象类,那么它必须实现该抽象类中的所有抽象方法。
java面向对象继承例题下面是一个简单的Java面向对象继承的例题:```java//父类class Animal{private String name;public Animal(String name){=name;}public void eat(){System.out.println(name+"is eating.");}}//子类class Dog extends Animal{private String breed;public Dog(String name,String breed){ super(name);this.breed=breed;}public void bark(){System.out.println(getName()+"is barking.");}}//测试类public class Main{public static void main(String[]args){Dog myDog=new Dog("Tom","Labrador");myDog.eat();//调用父类的eat方法myDog.bark();//调用子类的bark方法}}```在上面的代码中,我们定义了一个Animal类作为父类,它有一个私有成员变量name和一个公共方法eat()。
然后我们定义了一个Dog类作为子类,它继承了Animal类并添加了一个私有成员变量breed和一个公共方法bark()。
在子类的构造函数中,我们通过super关键字调用了父类的构造函数来初始化name成员变量。
在测试类中,我们创建了一个Dog对象并调用了它的eat()和bark()方法。
由于子类继承了父类的方法,因此我们可以直接调用父类的方法而不需要显式地继承它。
类的继承习题一、选择题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、为了区分重载多态中同名的不同方法,要求(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中,组合和继承是两种不同的代码复用技术,各有其优缺点。
以下是关于组合和继承的选择题:
1.选择题:在Java中,子类继承父类时,子类可以继承父类的哪些内容?
A. 构造函数
B. 变量和方法
C. 变量
D. 方法
答案:B. 变量和方法。
2.选择题:在Java中,使用组合可以解决哪些问题?
A. 代码复用
B. 多态
C. 封装
D. 抽象
答案:A. 代码复用。
3.选择题:在Java中,组合和继承的主要区别是什么?
A. 组合需要使用关键字implements,而继承需要使用关键字extends。
B. 组合可以实现代码复用,而继承不能。
C. 组合可以继承父类的方法和属性,而组合只能继承父类的方法。
D. 组合可以实现多态,而继承不能。
答案:C. 组合可以继承父类的方法和属性,而组合只能继承父类的方法。
4.选择题:在Java中,使用组合可以实现哪些功能?
A. 多态
B. 抽象
C. 封装
D. 以上都是
答案:D. 以上都是。
Java继承练习题第⼀题建⽴⼀个汽车Auto类,包括轮胎个数,汽车颜⾊,车⾝重量、速度等成员变量。
并通过不同的构造⽅法创建实例。
⾄少要求:汽车能够加速,减速,停车。
再定义⼀个⼩汽车类Car,继承Auto,并添加空调、CD等成员变量,覆盖加速,减速的⽅法第⼆题写⼀个Person类,有编号id,姓名name,职位job。
构造⽅法带三个参数。
⽅法:登陆login注册register⾃我介绍talk写⼀个学⽣Student类继承Person类,⽅法有:考试test属性有:学费money写⼀个⽼师Teacher类继承Person类,属性有⼯资salary⽅法有:⼯作work写⼀个测试类TestPerson,测试学⽣和⽼师学⽣:姓名-张三职位-学⽣学费-18000⽼师:姓名-李四职位-⽼师⼯资-8000注册、登陆输出就可以,⾃我介绍输出属性第三题定义⼀个⽗类:形状类Shapes,⾥⾯有两个⽅法,分别是求⾯积和周长。
定义⼀个⼦类:矩形Rectangle定义⼀个⼦类:三⾓形 Triagle定义⼀个⼦类:圆 Circle定义⼀个测试类:传⼊圆的半径4 输出周长和⾯积传⼊矩形的长和宽4,5 输出周长和⾯积传⼊三⾓形三边:3,4,5 输出周长和⾯积第⼀题:package homework;public class Auto {protected int gears;protected String color;protected double weight;protected double speed;public Auto() {this.gears=4;this.color="黄⾊";this.weight=200;this.speed=50;}public Auto(int gears, String color, double weight, double speed) {super();this.gears = gears;this.color = color;this.weight = weight;this.speed = speed;}public void speedUp(){speed+=5;System.out.println("加速⾄"+speed);}public void speedDown(){speed-=5;System.out.println("减速⾄"+speed);}public void stop(){speed=0;System.out.println("汽车停⽌,速度是"+speed);}}package homework;public class Car extends Auto{protected String kongtiao;protected String CD;public Car() {super();kongtiao="品牌1空调";CD="CD1";}public Car(int gears, String color, double weight, double speed,String kongtiao, String cD) {super(gears, color, weight, speed);this.kongtiao = kongtiao;CD = cD;}@Overridepublic void speedUp(){super.speed+=10;System.out.println("加速⾄"+speed);}@Overridepublic void speedDown() {speed-=10;System.out.println("减速⾄"+speed);}public void information(){System.out.println("当前是"+color+"的"+gears+"轮"+color+"的重"+weight+"的配有"+kongtiao+"和"+CD+"的车⼦,当前时速为"+speed); }}package homework;public class TestAuto {public static void main(String[] args) {Car car=new Car();rmation();car.speedDown();car.speedUp();car.stop();System.out.println();Car car2=new Car(3, "⽩⾊", 300, 70,"品牌2空调", "CD2");rmation();car2.speedDown();car2.speedUp();car.stop();}}第⼆题:package homework;public class Person {protected int id;protected String name;protected String job;public Person(int id, String name, String job) {this.id = id; = name;this.job = job;}public void login(){System.out.println("登陆成功");}public void register(){System.out.println("注册成功");}public void talk(){System.out.println("⼤家好!我是"+name+",编号是"+id+",职位是"+job); }}package homework;public class Student extends Person {protected double money;public Student(int id, String name, String job, double money) {super(id, name, job);this.money = money;}public void test(){System.out.println("我在考试");}public void information(){System.out.println("姓名-"+name+"\t职位-"+job+"\t学费"+money);}}package homework;public class Teacher extends Person{protected double salary;public Teacher(int id, String name, String job, double salary) {super(id, name, job);this.salary = salary;}public void work(){System.out.println("我在⼯作");}public void information(){System.out.println("姓名-"+name+"\t职位-"+job+"\t⼯资"+salary);}}package homework;public class TestPerson {public static void main(String[] args) {Student stu=new Student(1, "张三", "学⽣", 18000); stu.login();stu.register();stu.talk();stu.test();rmation();System.out.println();Teacher tea=new Teacher(2, "张⽼师", "⽼师", 8000); tea.login();tea.register();tea.talk();rmation();}}第三题:package homework;public class Shapes {public void area(){System.out.println("求⾯积");}public void zhouChang(){System.out.println("求周长");}}package homework;public class Rectangle extends Shapes {private int chang;private int kuan;public Rectangle(int chang, int kuan) {super();this.chang = chang;this.kuan = kuan;}@Overridepublic void area() {System.out.println("长⽅形⾯积是"+chang*kuan);}@Overridepublic void zhouChang() {System.out.println("长⽅形周长是"+(chang+kuan)*2); }}package homework;public class Circle extends Shapes{private int a;public Circle(int a) {super();this.a = a;}@Overridepublic void area() {System.out.println("圆形⾯积是"+a*a*Math.PI);}@Overridepublic void zhouChang() {System.out.println("圆形周长是"+a*Math.PI*2);}}package homework;public class Triagle extends Shapes {private int a;private int b;private int c;public Triagle(int a, int b, int c) {super();this.a = a;this.b = b;this.c = c;}public void area() {System.out.println("三⾓形⾯积是"+Math.sqrt((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a))/4); }@Overridepublic void zhouChang() {System.out.println("三⾓形周长是"+(a+b+c));}}package homework;public class TestShapes {public static void main(String[] args) {Circle circle=new Circle(1);circle.area();circle.zhouChang();Rectangle rectangle=new Rectangle(2, 3);rectangle.area();rectangle.zhouChang();Triagle triagle=new Triagle(3, 4, 5);triagle.area();triagle.zhouChang();}}。
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 对象,并调用它们的方法。
第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 )。
第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面向对象编程的理解。
二、继承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面向对象编程中继承、多态和接口的理解。
一.extends和super的使用和方法的重写1.定义一个人的类(属性有名字,年龄。
写一个能输出各个属性值的方法showlnfo()),定义一个学生类(属性有性别),学生继承人类要求:(1)父类的属性赋值用构造方法来实现(分别用有参数构造方法和无参数构造方法实现)(2)子类的属性也用构造方法来赋值。
(3)在子类中重写父类的showInfo()方法(4)声明学生类的对象,调用学生的显示信息的方法。
2定义Animal父类,含有属性name,sex,age,方法sleep,run,编写一个子类Person,继承Animal类,然后调用父类的属性和方法- *■ ♦1、试编写三个具有继承关系的类,人、8、€(8继承人,C继承B)。
要求A中包含方法a1()、a2(),B类中的方法b1()访问了 a1()和 a2(),C 类中的方法 c1()访问了@1()、a2()、b1()。
提示:(a1(),a2(),b1(),c1()这些方法体除了实现题目要求之外,其余内容可以任意编写。
)2、请编码实现动物世界的继承关系:动物(Animal)具有行为:吃(eat)、睡觉(sleep)动物包括:兔子(Rabbit),老虎(Tiger)这些动物吃的行为各不相同(兔子吃草,老虎吃肉);但睡觉的行为是一致的。
请通过继承实现以上需求,并编写测试类AnimalTest进行测试。
3、父类Person包含like()方法子类Son重写父类方法并打印输出4、(选做)父类Employee 属性:name、sex,带一个构造方法Employee(String n, char s)子类Worker 继承自Employee 属性:char category;//类别boolean dressAllowance; 〃是否提供服装津贴,有一个构造方法负责构造所有属性,还有一个自定义方法isDressAll()这个方法负责通过判断dressAllowance的值输出,是否提供服装津贴。
新建一个类测试类InheDemo在main方法中新建一个Worker对象,输出这个对象的所有属性并调用isDressAll()方法得到津贴信息选择题(共50题,每题1.5分,共75分。
多选题选不全或选错都不得分。
)1.以下属于面向对象的特征的是(C,D)。
(两项)A)重载B)重写C)封装D)继承2.以下代码运行输出是(C)public class Person{private String name=”Person”;int age=0;}public class Child extends Person{public String grade;public static void main(String[] args){Person p = new Child();System.out.println();}}A)输出:PersonB)没有输出C)编译出错D)运行出错3.在使用super和this关键字时,以下描述正确的是(A)A)在子类构造方法中使用super ()显示调用父类的构造方法,super ()必须写在子类构造方法的第一行,否则编译不通过B)super ()和this ()不一定要放在构造方法内第一行C)this ()和super ()可以同时出现在一个构造函数中D)this ()和super ()可以在static环境中使用,包括static方法和static语句块4.以下对封装的描述正确的是(D)A)只能对一个类中的方法进行封装,不能对属性进行封装B)如果子类继承了父类,对于父类中进行封装的方法,子类仍然可以直接调用C)封装的意义不大,因此在编码时尽量不要使用D)封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性5.以下对继承的描述错误的是(A)A) Java中的继承允许一个子类继承多个父类B)父类更具有通用性,子类更具体C) Java中的继承存在着传递性D)当实例化子类时会递归调用父类中的构造方法6.以下程序的运行结果是(D)class Person{public Person(){System.out.println(“this is a Person”);}}public class Teacher extends Person{ private String name="tom〃; public Teacher(){ System.out.println(“this is a teacher”); super();}public static void main(String[] args){ Teacher teacher = new Teacher();System.out.println();}}A)this is a Personthis is a teachertomB)this is a teacherthis is a PersontomC)运行出错D)编译有两处错误7.以下说法错误的是()A)super.方法()可以调用父类的所有非私有方法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中不会出错class Book{protected int getPrice(){return 30;}}public class ComputerBook extends Book{}A)protected float getPrice(){}B)protected int getPrice(int page){}C)int getPrice(){}D)public int getPrice(){return 10;}14.以下对抽象类的描述正确的是(C)A)抽象类没有构造方法B)抽象类必须提供抽象方法C)有抽象方法的类一定是抽象类D)抽象类可以通过new关键字直接实例化15.以下对接口描述错误的有(D)A)接口没有提供构造方法B)接口中的方法默认使用public、abstract修饰C)接口中的属性默认使用public、static、final修饰D)接口不允许多继承16.以下代码,描述正确的有(A)interface IDemo{public static final String name;1void print();2public void getInfo();3}abstract class Person implements IDemo{4 public void print(){}}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)public class Test extends Father{private String name="test";public static void main(String[] args){Test test = new Test();System.out.println(test.getName());}}class Father{private String name="father";public String getName() {return name;}}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)public class Demo{public int add(int a,int b){try{return a+b;}catch(Exception e){System.out.println(“catch 语句块");}finally{System.out.println(“finally 语句块");}return 0;}public static void main(String[] args){Demo demo = new Demo();System.out.println(“和是:”+demo.add(9,34));}}A)编译异常B) finally语句块和是:43C)和是:43 finally语句块D) catch语句块和是:4324.以下描述不正确的有(D)A) try块不可以省略B)可以使用多重catch块C)finally块可以省略D)catch块和finally块可以同时省略25.以下对自定义异常描述正确的是(C)A)自定义异常必须继承ExceptionB)自定义异常可以继承自ErrorC)自定义异常可以更加明确定位异常出错的位置和给出详细出错信息D)程序中已经提供了丰富的异常类,使用自定义异常没有意义26.以下程序运行结果是(D)public class Test {public int div(int a, int b) {try {return a / b;}catch(Exception e){System.out.println(“Exception”);}catch(NullPointerException e){System.out.println(''ArithmeticException");}catch (ArithmeticException e) {System.out.println(''ArithmeticException");} finally {System.out.println(''finally");}return 0;}public static void main(String[] args) {Test demo = new Test();System.out.println("商是:”+ demo.div(9, 0));}}A)Exception finally 商是:0B)ArithmeticException finally 商是:0C)finally 商是:0D)编译报错27.以下对TCP和UDP描述正确的是(D)A)TCP不能提供数据的可靠性B)UDP能够保证数据库的可靠性C)TCP数据传输效率高于UDPD)UDP数据传输效率高于TCP28.在Java中,下面对于构造函数的描述正确的是(D)。