继承、多态、接口练习
- 格式:ppt
- 大小:1.00 MB
- 文档页数:25
一、单选题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中,能使派生类的功能可以被基类的方法或引用变量所调用,向后兼容,这种方法叫做()。
第七章继承多态一、选择题:1、分析:class A {A() { }}class B extends A { //系统自动生成的构造方法和类的访问权限一样}哪两种说法是正确的? ( )A:类B的构造方法是public的. B:类B的构造方法包含对this()的调用. C:类B的构造方法没有参数. D:类B的构造方法包含对super()的调用.2、运行结果是:()class Base {Base() { System.out.print("Base"); }}public class Alpha extends Base {public static void main( String[] args ) {new Alpha();new Base();}}A: Base B: BaseBase C: 编译失败. D: 没有输出. E: 运行时异常. 3. 程序的运行结果是?()A: 编译失败. B: hello from a C: hello from bD: hello from b E: hello from ahello from a hello from b4. 运行结果是:()class TestSuper {TestSuper(int i) { }}class TestSub extends TestSuper{ }class TestAll {public static void main (String [] args) {new TestSub();}}A: 编译失败. B: 程序运行没有异常.C: 第7行抛出异常. D: 第2行抛出异常.5. 程序的运行结果是?()A: 0 B: 1 C: 2 D: 编译失败.6. 对于语句"B is a D" 和"B has a C",一下哪两种说法是正确的? ( ) A:D是B. B:B是D. C:D是C. D:B是C. E:D继承B.F:B 继承D.7. 运行结果是?()A: 1 B: 2 C: 第8行编译失败. D: 第14行编译失败.8. 分析:public class ConstOver {public ConstOver(int x, int y, int z) {}}哪两个是对ConstOver 的构造方法的重载? ( )A:ConstOver() { } B:protected int ConstOver() { }C:private ConstOver(int z, int y, byte x) { }D:public Object ConstOver(int x, int y, int z) { }E:public void ConstOver(byte x, byte y, byte z) { }9. 运行结果是?()A: 4,4 B: 4,5 C: 5,4 D: 5,5 E: 编译失败.10. 分析:public class X {public X aMethod() { return this;}}1) public class Y extends X {2)3) }在第2行可以插入哪两项? ( )A:public void aMethod() { } B:private void aMethod() { }C:public void aMethod(String s) { } D:private Y aMethod() { return null; } E:public X aMethod() { return new Y(); }11. 运行结果是?()A: 4,4 B: 4,5 C: 5,4 D: 5,5 E: 编译失败.12. 以下哪两个重载了方法setVar()? ( )public class MethodOver {public void setVar(int a, int b, float c) {}}A:private void setVar(int a, float c, int b) { } B:public int setVar(int a, float c, int b) {return a;}C:protected void setVar(int a, int b, float c) { } D:public int setVar(int a, int b, float c) {return a;}E:protected float setVar(int a, int b, float c) {return c;}13. 分析:1) class BaseClass {2) private float x = 1.0f;3) protected void setVar(float f) { x = f; }4) }5) class SubClass extends BaseClass {6) private float x = 2.0f;7) // insert code here8) }在第7行插入哪两个覆盖了方法setVar()? ( )A:void setVar(float f) { x = f; } B:public void setVar(int f) { x = f; } C:public void setVar(float f) { x = f; } D:public double setVar(float f){ return f; }E:public final void setVar(float f) { x = f; } F:protected float setVar() { x = 3.0f; return 3.0f; }14. 运行结果是?( )A: 1 B: 2 C: 运行时异常. D: 第8行编译错误. E: 第14行编译错误.15. 分析:class A {protected int method1(int a, int b) { return 0; }}在A的子类中,以下哪两个方法是合法的? ( )A:public int method1(int a, int b) { return 0; } B:private int method1(int a, long b) { return 0; }C:private int method1(int a, int b) { return 0; } D:public short method1(int a, int b) { return 0; }E:static protected int method1(int a, int b) { return 0; }16. 分析:1) public abstract class Test {2) public abstract void methodA();3)4) public abstract void methodB()5) {6) System.out.println("Hello");7) }8) }哪两种改法,可以使程序通过编译? ( )A:给方法methodA()加方法体C:在Test的声明中去掉abstractB:用";"替换第5-7行D:在方法methodA()的声明中去掉abstract E: 在方法methodB()的声明中去掉abstract17. 运行结果是:()1) abstract class AbstractIt {2) abstract float getFloat();3) }4) public class AbstractTest extends AbstractIt {5) private float f1 = 1.0f;6) private float getFloat() { return f1; }7) }A: 编译成功. B: 运行时异常. C: 第2行编译失败. D: 第6行编译失败.18. 在接口中哪两个方法的声明是合法的? ( )A:void method1(); B:public void method2(); C:static public void method5();D:protected void method3(); E:final public void method4();19. 分析:1) public interface Foo {2) int k = 4;3) }哪三项与第2行等价? ( )A:final int k = 4; B:public int k = 4; C:static int k = 4;D:abstract int k = 4; E:volatile int k = 4; F:protected int k = 4;20. 分析:interface Inter { }class A implements Inter { }class B extends A {B() {A[] arr = new A[10];boolean b1 = this instanceof Inter;boolean b2 = arr instanceof Object;System.out.println("b1 = " + b1 + ", b2 = " + b2);}}创建B的对象时会输出?( )A: 编译失败. B: b1 = true, b2 = true C: b1 = true, b2 = falseD: b1 = false, b2 = true E: b1 = false, b2 = false21. 哪一个能通过编译?()A: new Animal().soundOff(); B: Lion l = Alpha1.get("meat eater");C: Elephant e = new Alpha1(); D: new Alpha1().get("veggie").soundOff();22. 分析:class Passenger { }class Engine { }interface TransportVehicle {void loadPassengers();}interface Helicopter extends TransportVehicle {int flyIt( String direction );}abstract class JetStream implements Helicopter { }哪种说法是正确的?()A: TransportVehicle has a Passenger. B: 类Engine在类JetStream中.C: 接口TransportVehicle可以形成多态的基础.D: 继承JetStream的非抽象类可以随意声明方法loadPassengers().23. 哪三个是"is a" 关系? ( )A:public class X { } B:public interface Shape { }public class Y extends X { } public interface Rectangle extends Shape{ }C:public interface Color { } D:public class Species { }public class Shape { private Color color; } public class Animal { private Species species; }E:public class Person { } F:interface Component { }public class Employee { class Container implementsComponent {public Employee(Person person) { } private Component[] children;} }24. 运行结果是:()public interface Test {int frood = 42;}class TestImpl implements Test {private static int frood;public static void main(String[] args) {System.out.println(++frood);}}A: 0 B: 1 C: 42 D: 43 E: 编译失败. F: 运行时异常.25. 运行结果是?()A: 5 B: 10 C: 编译失败. D: 运行时异常.26. 运行结果是:()1) public class Test {2) public static void main(String args[]) {3) class Foo {4) public int i = 3;5) }6) Object o = (Object)new Foo();7) Foo foo = (Foo)o;8) System.out.println("i = " + foo.i);9) }10) }A: i = 3 C: 第6行抛出ClassCastException异常.B: 编译失败. D: 第7行抛出ClassCastException异常.27. 分析:String s = "abcde";Object ob = (Object)s;if (ob.equals(s)) {System.out.println("AAAA");} else {System.out.println("BBBB");}if (s.equals(ob)) {System.out.println("CCCC");} else {System.out.println("DDDD");}输出哪两行? ( )A:AAAA B:BBBB C:CCCC D:DDDD二、简答题1. 简述类与类之间的关系2. 简述继承的基本概念及继承的过程3. 简述方法重写以及方法重载与方法重写的区别4. 简述super关键字的用法5. 简述重写equals方法的步骤6. 简述instanceof关键字的用法7. 简述接口和抽象类的区别8. 简述什么是多态三、编程题1. 设计一个学生类Student,包括的属性有姓名name,年龄age,学位degree。
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实验报告继承、多态、接⼝和异常处理实验5 继承、多态、接⼝和异常处理⼀、实验⽬的1、掌握Java的类和对象的声明和使⽤⽅法;2、掌握Java的类的继承和实现⽅法;3、掌握多态性在类的继承中的运⽤;4、掌握接⼝的定义与使⽤;5、掌握基本异常的处理机制;6、熟悉try语句与catch语句的搭配使⽤;7、了解有异常处理与没有异常处理的差别;8、多重catch语句的使⽤;9、使⽤Throws声明异常和Throw抛出异常。
⼆、实验环境1、PC微机;2、DOS操作系统或 Windows 操作系统;3、Java sdk程序开发环境、eclipse集成环境。
三、实验内容1. 设计三个类,分别是学⽣类Student,本科⽣类UnderGraduate,研究⽣类Postjgraduate,其中Student类是⼀个抽象类,它包含学⽣的基本信息如姓名、所学课程、课程成绩等,⽽Undergraduate类和Postgraduate类都是Student类的⼦类,这两个类计算课程成绩等级的⽅法有所不同,如下表所⽰。
假设某班级⾥既有研究⽣⼜有本科⽣,编写程序统计出全班学⽣2. 和Mobilephone具体实现,并设计⼀个应⽤程序类来使⽤这些类。
3.要求设计⼀个GUI图形窗⼝程序,该程序让⽤户输⼊⼀个星期中的任意⼀天的数字1-7,然后输出该数字所对应的是星期⼏。
四、实验步骤实验内容⼀1.建⽴package experiment5_1,其最终⽬录结构如下:2.建⽴Student类:package experiment5_1;public abstract class Student {final static int CourseNo = 3;String name;String type;int[] courses;String courseGrade;public Student(String name) {/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html = name; courses = new int[CourseNo];courseGrade = "" ;}public abstract void calculateGrade();public String getName( ) {return name;}public String getType( ) {return type ;}public String getCourseGrade( ) {return courseGrade;}public int getCourseScore(int courseNumber) {return courses[courseNumber];}public void setName(String name) {/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html = name;}public void setType(String type) {this.type = type;}public void setCourseScore(int courseNumber, int courseScore) { //按课程索引号设置课程成绩this.courses[courseNumber] = courseScore ;}}3.建⽴外部类(1)研究⽣类Postjgraduatepackage experiment5_1;public class postgraduate extends Student {public postgraduate(String name) {super(name);type = "研究⽣";}public void calculateGrade() {// TODO Auto-generated method stubint total = 0;double average = 0;for (int i = 0; i < CourseNo; i++) {total += courses[i];};average = total / CourseNo;if (average>=90&&average<100) courseGrade = "优秀"; else if (average>=80&&average<90) courseGrade = "良好"; else if (average>=70&&average<80) courseGrade = "⼀般"; else if (average>=60&&average<70) courseGrade = "及格"; else courseGrade = "不及格";}}(2)本科⽣类UnderGraduatepackage experiment5_1;public class undergraduate extends Student {public undergraduate(String name ) {super(name);type = "本科⽣";}public void calculateGrade() {int total = 0;double average = 0;for (int i = 0; i < CourseNo; i++) {total += getCourseScore(i) ;};average = total / CourseNo;if (average>=80&&average<100) courseGrade = "优秀"; else if (average>=70&&average<80) courseGrade = "良好"; else if (average>=60&&average<70) courseGrade = "⼀般"; else if (average>=50&&average<60) courseGrade = "及格"; else courseGrade = "不及格";}}4.编写代码测试函数package experiment5_1;public class polymorphism {public static void main(String[] args) {Student[] students = new Student[5];students[0] = new undergraduate("陈建平");students[1] = new undergraduate("鲁向东");students[2] = new postgraduate("匡晓华");students[3] = new undergraduate("周丽娜");students[4] = new postgraduate("梁欣欣");for (int i=0; i<5 ;i++) {students[i].setCourseScore(0,87);students[i].setCourseScore(1,90);students[i].setCourseScore(2,78);}for (int i=0; i<5 ;i++) {students[i].calculateGrade();}System.out.println("姓名" + " 类型" +" 成绩");System.out.println("-----------------------");for (int i=0; i<5 ;i++) {System.out.println(students[i].getName( )+" "+students[i].getType( )+" "+students[i].getCourseGrade( ));}}}实验内容⼆1.建⽴package experiment5_2,其最终⽬录结构如下:2.写接⼝Soundable代码:package experiment5_2;public interface Soundable {public void increaseV olume( );public void decreaseV olume( );public void stopSound( );public void playSound( );}3.创建三个类Radio、Walkman和Mobilephone具体实现,分别添加代码:// Mobilephone类package experiment5_2;class Mobilephone implements Soundable{public void increaseV olume( ) {System.out.println("增⼤⼿机⾳量");}public void decreaseV olume( ) {System.out.println("减⼩⼿机⾳量");}public void stopSound( ) {System.out.println("关闭⼿机");}public void playSound( ) {System.out.println("⼿机发出来电铃声");}}// Walkman类package experiment5_2;class Walkman implements Soundable { public void increaseV olume( ) { System.out.println("增⼤随声听⾳量"); }public void decreaseV olume( ) { System.out.println("减⼩随声听⾳量"); }public void stopSound( ) {System.out.println("关闭随声听");}public void playSound( ) {System.out.println("随声听发出⾳乐"); }}// Radio类package experiment5_2;class Radio implements Soundable{ public void increaseV olume( ) { System.out.println("增⼤收⾳机⾳量"); }public void decreaseV olume( ) { System.out.println("减⼩收⾳机⾳量"); }public void stopSound( ) {System.out.println("关闭收⾳机");}public void playSound( ) {System.out.println("收⾳机播放⼴播"); }}4.创建people类及编写测试代码://People类package experiment5_2;class People {public void listen(Soundable s) {s.playSound( );}}//测试代码package experiment5_2;import java.util.Scanner;public class InterfaceTest {public static void main(String[] args) {int i;People sportsman = new People( );Scanner scanner = new Scanner(System.in);Soundable[] soundDevice = new Soundable[3];//往声⾳设备数组中放⼊能发声的设备soundDevice[0] = new Radio( );soundDevice[1] = new Walkman( );soundDevice[2] = new Mobilephone();System.out.println("你想听什么? 请输⼊选择:0-收⾳机1-随声听2-⼿机");i = scanner.nextInt( );//开始听声⾳sportsman.listen(soundDevice[i]);soundDevice[i].increaseV olume( );soundDevice[i].stopSound();scanner.close();}}实验内容三1.建⽴package experiment5_3,其最终⽬录结构如下package experiment5_3;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class DateTransf extends JFrame implements KeyListener{/****/private static final long serialVersionUID = 1L;private static DateTransf frm;private static JTextField txt;private static JTextField data;DateTransf() {setTitle("数字与星期转换");setLocation(700, 300);setSize(400,130);}public static void main(String[] args) {frm = new DateTransf();frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frm.setLayout(new GridLayout(2,2));txt = new JTextField(12);data = new JTextField(12);JLabel lable1 = new JLabel("输⼊数字:");JLabel lable2 = new JLabel("星期⼏:");frm.add(lable1);txt.addKeyListener(frm);frm.add(txt);frm.add(lable2);frm.add(data);frm.setVisible(true);}public void keyPressed(KeyEvent e) {if (e.getSource() == txt) {if (e.getKeyCode() == KeyEvent.VK_ENTER) // 判断按下的键是否是回车键{try {int number = Integer.parseInt(txt.getText());switch (number) {case 1:data.setText("Mon");break;case 2:data.setText("Tue");break;case 3:data.setText("Wen");break;case 4:data.setText("Thu");break;case 5:data.setText("Fri");break;case 6:data.setText("Sat");break;case 7:data.setText("Sun");break;default:JOptionPane.showMessageDialog(null, "您输⼊的数字不是1~7","⽆效⽇期",/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html RMATION_MESSAGE); break;}}catch (Exception e1) {// TODO: handle exceptionJOptionPane.showMessageDialog(null, "您输⼊的不是整数","⽆效⽇期",/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html RMA TION_MESSAGE); }}}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}}2.编译运⾏五、实验结果●实验内容⼀结果:●实验内容⼆结果:●实验内容三结果:六、实验⼩结1.这次实验的内容⽐较多,需要掌握Java的类和对象的声明和使⽤⽅法、Java的类的继承和实现⽅法、多态性在类的继承中的运⽤、接⼝的定义与使⽤、基本异常的处理机制、try语句与catch语句的搭配使⽤等等;2. 在实验过程中,重点是要区分好实例和类,灵活掌握类的调⽤。
继承练习题一、选择题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、面向对象程序的主要特征:继承,__封装___,___多态_____。
2、java中的继承机制之所以能够降低程序的复杂性,提高程序的效率,主要是因为它使代码可以__重用或复用___.3、java语言中,为将源代码翻译成__字节码__文件时产生的错误称为编译错误,而将程序在运行中产生的错误称为运行错误。
4、javac是java语言中的编译器,基本语法是:javac[选项] __文件名__,java是java语言中的解释执行器,基本语法是:java[选项]___类名___.5、java语言的主要贡献者是谁James gosling二、单选题1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B)。
A、javaB、.classC、htmlD、.exe2、main方法是Java Application程序执行的入口点,关于main方法的方法首部,以下(B)项是合法的。
A、public static void main()B、public static void main(String args[])C、public static int main(String[] arg)D、public void main(String arg[])三、判断1、Java语言具有较好的安全性和可移植性及与平台无关等特性。
√2、Java语言的源程序不是编译型的,而是编译解释型的。
√四、问答题1、编写、运行java程序需要经过哪些主要步骤?答:1.编写源文件,扩展名必须是.java2.编写java源程序,使用java编译器编写源文件,得到字节码文件3.运行java程序,使用javaSE平台只不过的java解释器来解释执行字节码文件。
2、阅读下列java源代码文件,并回答问题public class Speak{void speakHello(){System.out.println("I'm glad to meet you");}}class Xiti8{public static void main(String args[]){Speak sp=new Speak();sp.speakHello();}}(1)上述源文件的名字是什么?Speak.java(2)上述源文件编译后生成几个字节码文件,这些字节码文件的名字分别是什么?Speak.class Xiti8.class第2章(1)基本数据类型练习题一、填空题1、java基本数据类型中整型,字符型分别占用字节数为___4___,___2____.2、java语言中的浮点数根据数据存储长度和数值精度的不同,进一步分为_float__和__double__两种具体类型。
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多态练习题Java多态是一种允许不同类的对象对同一消息做出响应的机制,主要通过继承和接口实现。
以下是一些Java多态的练习题,旨在帮助学生更好地理解和掌握Java多态的概念。
1. 理解多态的概念- 描述什么是Java中的多态性,并给出一个简单的例子。
2. 多态的实现方式- 列出Java中实现多态的两种主要方式,并解释它们的区别。
3. 重载与重写- 解释方法重载(overloading)和方法重写(overriding)的概念,并给出一个例子,展示如何使用它们来实现多态。
4. 向上转型- 给出一个代码示例,展示如何通过向上转型来实现多态。
5. 接口与抽象类- 解释接口和抽象类在实现多态中的作用,并给出一个使用接口实现多态的例子。
6. 动态绑定- 描述动态绑定的概念,并解释它是如何与多态性相关联的。
7. 多态与继承- 编写一个Java程序,展示继承如何与多态性一起工作,创建一个基类和几个派生类,然后使用基类引用来调用派生类的方法。
8. 多态与数组- 编写一个Java程序,展示如何使用多态性将不同类型的对象存储在同一个数组中。
9. 多态与方法调用- 编写一个Java程序,展示如何使用多态性在运行时调用正确的方法。
10. 多态与构造函数- 编写一个Java程序,展示如何在多态性的情况下调用构造函数。
11. 多态与异常处理- 编写一个Java程序,展示如何在多态性的情况下使用异常处理。
12. 多态与泛型- 编写一个Java程序,展示如何结合使用多态性和泛型。
13. 多态与设计模式- 描述多态性如何在设计模式中发挥作用,并给出一个使用设计模式实现多态性的例子。
14. 多态与性能- 讨论多态性对Java程序性能的潜在影响,并给出优化多态性使用的建议。
15. 多态与反射- 描述反射机制如何与多态性结合使用,并给出一个使用反射实现多态性的例子。
16. 多态与类型安全- 讨论Java中多态性与类型安全的关系,并给出一个示例,展示如何在多态性的情况下保持类型安全。