继承与接口练习题
第五章 继承与接口 习题
1.写出程序的运行结果//扩展Point类public class Point{protected int x,y;public Point(int x, int y){this.x=x;this.y=y;}public boolean equals(Point p){return (x==p.x && y=p.y);}public int getX(){return x;}public int getY(){return y;}public string toString(){return new}}public class NamedPoint extends Point{final private String name;public NamedPoint(int x, int y, String name){super(x,y);=name;}public String getName(){return name;}public String toString(){return new String(name+"("+x+", "+y+")");}}public class TestNamedPoint{public static void main(String[] a){NamedPoint p=new NamedPoint(2,-3,"p");System.out.println("p:"+p);System.out.println("p.getName():"+p.getName());System.out.println("p.getX():"+p.getX());NamedPoint q=new NamedPoint(2,-3,"Q");System.out.println("q: "+q);System.out.println("q.equals(p):"+q.equals(p));}}2.//写出程序运行结果class ClassX{protected int m;protected int n;void f(){System.out.println("Now in ClassX.f().");m=22;}void g(){System.out.println("Now in ClassX.g().");n=44;}public String toString(){return new String("{ m="+m+", n="+n+"}");}}class ClassY extends ClassX{private double n;void g(){System.out.println("Now in ClassY.g().");n=3.14159265;}public String toString(){return new String("{ m="+m+", n="+n+"}");}}class TestClassY{public static void main(String[] a){ClassX x=new ClassX();x.f();x.g();System.out.println("x="+x);ClassY y=new ClassY();y.f();y.g();System.out.println("y= "+y);}}3.有接口Speaker包含一个方法speak(),实现以下分层结构:4. 有接口Geometric ,有3个方法getArea(), getCircumference(),getX()和getY()。
第七章继承多态练习题
第七章继承多态一、选择题: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面向对象基础部分练习题,包括对象,类,继承,封装,多态,接口,内部类等等,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.下列代码编译或运行的结果是:()。
接口习题
一.单选题1.JAVA语言的类间的继承关系是()。
A多重的B.单重的C.线程的D.不能继承2.以下关于JAVA语言继承的说法正确的是()。
A.Java中的类可以有多个直接父类B.抽象类中不能有子类C.JAVA中的接口支持多继承D.最终类可以作为其他类的父类3.下列选项中,用于定义接口的关键字是()。
A)interface B)implements C)abstract D)class4.下列选项中,用于实现接口的关键字是()。
A)interface B)implements C)abstract D)class5.以下哪个接口的定义是正确的?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();}6.定义一个接口时,下列哪个关键字用不到?A)public B)extends C)interface D)class7.在使用interface声明一个接口时,只可以使用哪个修饰符修饰该接口。
A)private B)protected C)private或者protected D)public8.下列类头定义中,错误的是?A)public x extends yB)public class x extends yC)class x extends y implements y1D)class x9.下列叙述正确的是?A)Java中允许多重继承B)Java一个类只能实现一个接口C)Java中只能单重继承D)Java中一个类可以继承多个抽象类10.现有类A和接口B,以下描述中表示类A实现接口B的语句是()。
A.class A implements BB.class B implements AC.class A extends BD.class B extends A二.填空题1.接口中的所有属性均为__public____、___static___和__final_。
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)。
继承、多态、接口练习
总结
重写的关键字是什么? 抽象类是不是必须有抽象方法? 如果抽象类是People,子类是Employee和Manager, 下面代码是否正确
People people=new People(); People people=new Employee();√ Employee employee=new Manager();
简单工厂中用户得到的产品是父类(抽象类)对象 还是子类(实体类)对象?
接口 接口就是一组约定和规范
定义接口使用关键字interface 接口中只能有属性和方法 接口中所有属性都是公有的,没有实现的。Public省略不 写,get和set都没有是实现 接口中所有的方法都是公有抽象的。Public和abstract都省 略不写 实现接口用:,接口可以多继承 如果一个类不是抽象类,又继承了某接口,那么它必须实 现接口中所有的抽象方法。实现时,要显式地加上public。
公有的没有实现的属性 公有的抽象的方法
4、接口中public 和abstract都省略不写。
十一、用接口Figure规范化SanJiaoXing类 1、定义整型字段d、h;分别表示底和高 2、规范化d和h为属性B1和B2 3、修改构造方法 4、实现抽象方法area 知识点: 1、实现接口用: 2、实现接口的属性要显示地加上public 3、实现接口的抽象方法要显示地加上public,无须override 关键字。
初始状态
组合框点开状态
初值为
只读
选择了矩形后状态
选择了三角形后状态 只读
只读
在组合框中选择不同的形状,让不同的文本框处于可用状态。
五、制作界面
三角形面积
矩形面积
梯形面积 点击求面积按钮,则根 据组合框中选择的形状, 构造不同的形状对象, 并在多行文本区显示当 前图形对象的面积。
继承练习题
继承练习题一、选择题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()`。
继承面试题
6以下是练习题:1. 下面描述函数重写错误的是 A. 要有子类继承或实现BB. 子类方法的权限必须大于等于父类的权限C. 父类中被private权限修饰的方法可以被子类重写D. 子类重写接口中的抽象方法,子类的方法权限必须是public的2. 下列说法哪个正确?(B C)A. 一个程序可以包含多个源文件B. 一个源文件中只能有一个公共类C. 一个源文件中可以有多个类D. 一个源文件只能供一个程序使用3. 下面关于类的设计思路描述错误的是 ( B )A. 根据需求写出类所包含的字段(成员变量)B. 根据面向对象的思想要求,所有的字段都必须私有化C. 封装之后的字段在本类内也必须使用get/set方法D. 按需求可添加若干构造方法4. 关于封装下面介绍错误的是(D )A. 封装将变化隔离B. 封装提高重用性C. 封装提高安全性D. 只有被private修饰才叫做封装5. 试图编译运行下面的代码会发生什么情况Dpublic class MyClass{static int i;public static void main(String[] args){System.out.println(i); } }A. 错误,变量i没有被初始化B. 输出nullC. 输出1D. 输出06. 下面对static的描述错误的是A. 静态修饰的成员变量和成员方法随着类的加载而加载B. 静态修饰的成员方法可以访问非静态成员变量C. 静态修饰的成员可以被整个类对象所共享D. 静态修饰的成员变量和成员方法随着类的消失而消失7. 在Java中,下面对于构造函数的描述正确的是(D )A. 类必须显式定义构造函数B. 构造函数的返回类型是voidC. 构造函数和类有相同的名称,并且不能带任何参数D. 一个类可以定义多个构造函数8. 给定java代码,如下:abstract class Shape { abstract void draw( ); }要创建Shape类的子类Circle,以下代码正确的是(D)。
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中继承关系笔试题
1.在Java中,子类可以继承父类的哪些特性?
答:子类可以继承父类的所有非私有属性和方法,包括公有、受保护和默认访问级别。
此外,子类还可以继承父类的构造函数和初始化块。
2.如果一个子类要继承父类的方法,应该如何实现?
答:子类要继承父类的方法,可以使用与父类方法同名、相同参数列表和相同返回类型的方法。
如果子类想要重写父类的方法,可以使用@Override注解来标记。
3.什么是多态性?在Java中如何实现多态性?
答:多态性是指一个接口可以有多种实现方式,或者一个对象可以有多种形态。
在Java中,多态性可以通过继承和接口实现。
子类可以继承父类的属性和方法,也可以实现接口的规范,从而让一个对象在不同上下文中表现出不同的行为。
4.如果一个子类要继承父类的构造函数,应该如何实现?
答:如果一个子类要继承父类的构造函数,可以在子类的构造函数中通过super关键字调用父类的构造函数。
如果子类没有显式地定义构造函数,则会自动调用父类的无参构造函数。
5.什么是抽象类?在Java中如何定义抽象类?
答:抽象类是一个不能被实例化的类,它只能作为其他类的基类。
抽象类可以包含抽象方法和非抽象方法。
在Java中,使用abstract关键字来定义抽象类,抽象类不能被实例化,但可以被继承。
如果一个子类继承了一个抽象类,那么它必须实现该抽象类中的所有抽象方法。
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 继承练习题Java继承练习题Java的继承是一种重要的面向对象编程概念,通过继承可以实现代码的重用和扩展性。
在这篇文章中,我将为您提供一些Java继承的练习题,帮助您加深对于继承的理解并提升编程技巧。
题目一:创建一个父类Animal,包含属性name和age,并定义一个方法showInfo用于展示动物的信息。
创建子类Dog和Cat并重写showInfo方法,分别展示狗和猫的信息。
题目二:创建一个父类Shape,包含属性color和area,并定义一个计算面积的抽象方法calculateArea。
创建子类Circle和Rectangle,并实现calculateArea方法,分别计算圆和矩形的面积。
题目三:创建一个父类Employee,包含属性name和salary,并定义一个方法getAnnualSalary用于计算员工的年薪。
创建子类Manager 和Staff,其中Manager类有一个bonus属性用于表示经理的奖金,Staff类没有额外的属性,分别实现getAnnualSalary方法。
题目四:创建一个父类Vehicle,包含属性brand和price,并定义一个方法showInfo用于展示交通工具的信息。
创建子类Car和Bike,分别实现showInfo方法,在方法中增加信息的格式化输出。
题目五:创建一个父类Phone,包含属性brand和price,并定义一个抽象方法sendMessage。
创建子类Android和IOS,分别实现sendMessage方法,输出不同系统的短信。
以上是几个Java继承的练习题,接下来我将给出每个题目的解答及相应的代码示例。
题目一解答:```javaclass Animal {protected String name;protected int age;public Animal(String name, int age) { = name;this.age = age;}public void showInfo() {System.out.println("Name: " + name + ", Age: " + age);}}class Dog extends Animal {public Dog(String name, int age) {super(name, age);}@Overridepublic void showInfo() {System.out.println("Dog - Name: " + name + ", Age: " + age); }}class Cat extends Animal {public Cat(String name, int age) {super(name, age);}@Overridepublic void showInfo() {System.out.println("Cat - Name: " + name + ", Age: " + age); }}public class Main {public static void main(String[] args) {Animal animal1 = new Dog("Tom", 3);Animal animal2 = new Cat("Jerry", 4);animal1.showInfo(); // 输出:Dog - Name: Tom, Age: 3animal2.showInfo(); // 输出:Cat - Name: Jerry, Age: 4 }}```题目二解答:```javaabstract class Shape {protected String color;protected double area;public Shape(String color) {this.color = color;}public abstract void calculateArea();public void showInfo() {System.out.println("Color: " + color + ", Area: " + area); }}class Circle extends Shape {private double radius;public Circle(String color, double radius) {super(color);this.radius = radius;}@Overridepublic void calculateArea() {area = Math.PI * radius * radius;}}class Rectangle extends Shape {private double width;private double height;public Rectangle(String color, double width, double height) { super(color);this.width = width;this.height = height;}@Overridepublic void calculateArea() {area = width * height;}}public class Main {public static void main(String[] args) {Shape shape1 = new Circle("Red", 2.5);Shape shape2 = new Rectangle("Blue", 3.0, 4.0);shape1.calculateArea();shape1.showInfo(); // 输出:Color: Red, Area: 19.634954084936208shape2.calculateArea();shape2.showInfo(); // 输出:Color: Blue, Area: 12.0 }}```题目三解答:```javaclass Employee {protected String name;protected double salary;public Employee(String name, double salary) { = name;this.salary = salary;}public double getAnnualSalary() {return salary * 12;}}class Manager extends Employee {private double bonus;public Manager(String name, double salary, double bonus) { super(name, salary);this.bonus = bonus;}@Overridepublic double getAnnualSalary() {return salary * 12 + bonus;}}class Staff extends Employee {public Staff(String name, double salary) {super(name, salary);}}public class Main {public static void main(String[] args) {Employee employee1 = new Manager("John", 5000, 2000);Employee employee2 = new Staff("Alice", 3000);System.out.println("Employee1 Annual Salary: " + employee1.getAnnualSalary()); // 输出:Employee1 Annual Salary: 62000.0System.out.println("Employee2 Annual Salary: " + employee2.getAnnualSalary()); // 输出:Employee2 Annual Salary: 36000.0}}```题目四解答:```javaclass Vehicle {protected String brand;protected double price;public Vehicle(String brand, double price) {this.brand = brand;this.price = price;}public void showInfo() {System.out.println("Brand: " + brand + ", Price: " + price);}}class Car extends Vehicle {public Car(String brand, double price) {super(brand, price);}@Overridepublic void showInfo() {System.out.printf("Car - Brand: %s, Price: %.2f\n", brand, price);}}class Bike extends Vehicle {public Bike(String brand, double price) {super(brand, price);}@Overridepublic void showInfo() {System.out.printf("Bike - Brand: %s, Price: %.2f\n", brand, price);}}public class Main {public static void main(String[] args) {Vehicle vehicle1 = new Car("Toyota", 25000);Vehicle vehicle2 = new Bike("Yamaha", 1500);vehicle1.showInfo(); // 输出:Car - Brand: Toyota, Price: 25000.00 vehicle2.showInfo(); // 输出:Bike - Brand: Yamaha, Price: 1500.00}}```题目五解答:```javaabstract class Phone {protected String brand;protected double price;public Phone(String brand, double price) { this.brand = brand;this.price = price;}public abstract void sendMessage();}class Android extends Phone {public Android(String brand, double price) { super(brand, price);}@Overridepublic void sendMessage() {System.out.println("Android Phone - Brand: " + brand + ", Price: " + price);}}class IOS extends Phone {public IOS(String brand, double price) {super(brand, price);}@Overridepublic void sendMessage() {System.out.println("iOS Phone - Brand: " + brand + ", Price: " + price);}}public class Main {public static void main(String[] args) {Phone phone1 = new Android("Samsung", 1000);Phone phone2 = new IOS("iPhone", 1500);phone1.sendMessage(); // 输出:Android Phone - Brand: Samsung, Price: 1000.0phone2.sendMessage(); // 输出:iOS Phone - Brand: iPhone, Price: 1500.0}}```通过完成以上继承练习题,您可以对Java继承的概念和用法有更深入的理解,并巩固自己的编程能力。
类封装与继承习题(题)
类封装与继承习题(题)1.以下关于继承的叙述正确的是(C)。
AA、、在Java中类只允许单一继承B、在Java中一个类只能实现一个接口C、在Java中一个类不能同时继承一个类和实现一个接口D、在Java中接口只允许单一继承2.有继承关系时用到的关键字是(A)。
(2分)A:extendB:extendsC:implementsD:implement3:Java变量中,以下不属于复合类型的数据类型是(D)。
(2分)A:类B:字符型C:数组型D:接口4:java中定义数组名为abc,下面(B)可以得到数组元素的个数。
(2分)A:abc.length()B:abc.lengthC:len(abc)D:ubound(abc)5:下列说法正确的是(A)。
(2分)A:编译后的Java源程序根据文件中定义的类和接口的个数产生相应个数的.class字节码文件。
B:Java语言的源文件中不是任何地方都可以加注释的。
C:一个文件中可以有多个访问权限为public的类。
D:含有main()方法的类可以为public的类,也可以为其他类。
6:在调用构造函数时(C)(2分)A:子类可以不加定义就使用父类的所有构造函数B:不管类中是否定义了何种构造函数,创建对象时都可以使用默认构造函数C:先调用父类的构造函数D:先调用形参多的构造函数7:Java与C/C++比较说法错误的是(D)。
(2分)A:Java不提供goto语句,所以也就没指定goto作为关键字。
B:Java没有指针。
C:Java没有联合和结构D:Java只有单继承没有多重继承。
8:若需要定义一个类域或类方法,应使用(B)修饰符。
(2分)A:staticB:packageC:privateD:public9:下列说法(C)是正确的。
(2分)A:程序执行到break语句是一定会结束所有的循环B:程序执行到continue语句时会结束当前循环C:break语句和continue语句都可以和标签协同使用D:continue语句和break语句的作用相同10:以下说法正确的是(D)。
Java_接口与类之间继承例题
1,定义一个接口Assaultable(可攻击的),该接口有一个抽象方法attack()。
2,定义一个接口Mobile(可移动的),该接口有一个抽象方法move()。
3,定义一个抽象类Weapon,实现Assaultable接口和Mobile接口,但并没有给出具体的实现方法。
4,定义3个类:Tank,Flighter,WarShip都继承自Weapon,分别用不同的方式实现Weapon 类中的抽象方法。
5,写一个类Army,代表一支军队,这个类有一个属性是Weapon数组w(用来存储该军队所拥有的所有武器);该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,并用这一大小来初始化数组w。
该类还提供一个方法addWeapon(Weapon wa),表示把参数wa所代表的武器加入到数组w中。
在这个类中还定义两个方法attackAll()和moveAll(),让w数组中的所有武器攻击和移动。
6,写一个主方法去测试以上程序。
interface Assaultable{//可攻击的void attack();}interface Mobile{//可移动的void move();}abstract class Weapon implements Assaultable,Mobile {public void attack(){}public void move(){}}class Tank extends Weapon{public void attack(){System.out.println("坦克攻击!!!");}public void move(){System.out.println("坦克移动!!!");}}class Flighter extends Weapon{public void attack(){System.out.println("战斗机攻击!!!");}public void move(){System.out.println("战斗机移动!!!");}}class Warship extends Weapon{public void attack(){System.out.println("战船攻击!!!");}public void move(){System.out.println("战船移动!!!");}}class Army{Weapon[] w;int max;int j=0;public int getMax() {return max;}public void setMax(int max) {this.max = max;}public Army(int max){w= new Weapon[max];this.max=max;System.out.println("您最多拥有"+max+"个武器!!!") ;}public void addWeapon(Weapon wa){if(j<getMax()){System.out.println("武器库足够!"+"已增加"+(j+1)+"个武器");w[j]=wa;j++;}else{System.out.println("警告:武器库已满!!!不能增加武器!!!");}}public void attackAll(){System.out.println();System.out.println("所有武器准备战斗!!!");for(int i=0;i<w.length;i++){System.out.print((i+1)+"号");w[i].attack();}}public void moveAll(){System.out.println();System.out.println("所有武器准备移动!!!");for(int i=0;i<w.length;i++){System.out.print((i+1)+"号");w[i].move();}}}public class Test1 {public static void main(String[] args){Army a = new Army(4);a.addWeapon(new Tank());a.addWeapon(new Flighter());a.addWeapon(new Warship());a.addWeapon(new Warship());a.addWeapon(new Warship());a.moveAll();a.attackAll();}}。
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面向对象编程的理解。
二、继承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 实验报告类的继承与接口 期末考试重点答案
姓 专 名 业 学号 班级 面向对象程序设计 类的继承与接口 计算机 09 成 绩
指导教师 实验时间 2011-6-20
课程名称 实验名称 实验所用 仪器设备
一、实验目的: ⑴ 学习类的多态性。 ⑵ 学习接口的定义和实现接口的方法。 ⑶ 学习包的创建和引用,熟悉类成员的访问控制。 二、实验内容 (1) 定义一个抽象基类 Shape,它包含一个抽象方法 getArea(),从 Shape 类派 生出 Rectangle 和 Circle 类,这两个类都用 getArea()方法计算对象的面积。编写 编写应用程序使用 Rectangle 类和 Circle 类。 (2) 定义接口 myIntfc, 接口中只有一个名为 area 的方法, 该方法有一个 double 类型参数,返回类型也为 double。编写一个应用程序,并实现接口 myIntfc,接口中 area 方法的实现是返回参数的立方值;在应用程序中调用该方法并输出其结果。 (3) 定义一个类, 使该类中具有不同访问权限的成员, 将这个类存放在一个包中。 在另一个包内再编写第二个类, 在此类中编写一个方法, 在该方法中操作第一个类中 的成员。 三、实验步骤 (1) 1.定义一个抽象基类 Shape 2.在类 Shape 中建一个抽象方法 getArea() 3. 从 Shape 类派生出 Rectangle 和 Circle 类 4.在派生类 Rectangle 和 Circle 中分别编写自己的算法 5.利用主类调用类 Shape 的派生类 Rectangle 和 Circle 6.编译,执行 1. 定义接口 myIntfc 2. 接口中写一个 area 方法 3. myIntfc 5. 在接口中 area 方法的实现是返回参数的立方值 6. 在应用程序中调用该方法并输出其结果 7.调试结果,修改再调试 1. 定义一个类,使该类中具有不同访问权限的成员 2. 将这个类存放在一个包中 3. 在另一个包内再编写第二个类 4. 在此类中编写一个方法,在该方法中操作第一个类中的成员
java练习题-继承
一.extends和super的使用和方法的重写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(String n,char s)子类Worker继承自Employee 属性:char category;//类别boolean dressAllowance;//是否提供服装津贴,有一个构造方法负责构造所有属性,还有一个自定义方法isDressAll()这个方法负责通过判断dressAllowance的值输出,是否提供服装津贴。
继承和接口设计 习题
第7章继承和接口设计一.选择题1.在C#中,一个类【】。
A) 可以继承多个类B) 可以实现多个接口C) 在一个程序中只能有一个子类D) 只能实现一个接口2.【】关键字用于在C#中从派生类中访问基类的成员。
A) new B) super C) this D) base3.在定义类时,若希望类的某个方法能够在派生类中进一步改进,以满足派生类的不同需要,则应将该方法声明为【】。
A) new B) public C) virtual D) override4.在C#中,在派生类中对基类的虚方法进行重写,要求在派生类的声明中使用【】。
A) new B) public C) virtual D) override5.已知类B是由类A继承而来,类A中有一个名为M的非虚方法,现在希望在类B中也定义一个名为M的方法,且两方法的参数个数和类型完全相同,若希望编译时不出现警告信息,则在类B中声明该方法时,应使用【】关键字。
A) static B) new C) override D) virtual6.假设类B继承了类A,下列说法错误的是【】。
A) 类B中的成员可以访问类A中的公有成员B) 类B中的成员可以访问类A中的保护成员C) 类B中的成员可以访问类A中的私有成员D) 类B中的成员可以访问类A中的静态成员7.关于多态,下列说法正确的是【】。
A) 多态实际上就是重载,它们本质上是以一样的B) 多态可以分为编译时多态和运行时多态。
前者的特点是在编译时就能确定要调用成员方法的哪个版本,后者则是在程序运行时才能确定要调用成员方法的哪个版本。
C) 编译时多态是在程序运行时才能确定要调用成员方法的哪个版本,而运行时多态在编译时就能确定要调用成员方法的哪个版本。
D) 多态和重载是两个完全不同的概念,前者是通过定义虚方法和重写虚方法来实现,后者是通过对同一函数名编写多个不同的实现代码来实现。
8.下列关于接口的说法,正确的是【】。
继承与接口练习题
/********以下作业在代码编写过程中要按照注释规范对 类,方法,属性,局部变量 进行注释关键代码片段也需要进行注释说明 ********/1、根据如下图示,使用继承编写出对应的程序。
然后分别创建对应的车辆,调用方法输出 车辆信息,并测试每辆车包含的其他方法。
尽量让你的程序变得有意思一些(属性和方 法可添加和扩展)。
所属公司最大载客数量I打发票2、3、请编码实现动物世界的继承关系:动物(Animal )具有行为:吃(eat )、睡觉(sleep ) 动物包括:兔子(Rabbit ),老虎(Tiger ) 这些动物吃的行为各不相同(兔子吃草,老虎吃肉);但睡觉的行为是一致的。
请通过继承实现以上需求,并编写测试类 AnimalTest 进行测试 4、请使用接口编码实现如下需求:乐器(Instrument )分为:钢琴(Piano )、小提琴(Violin ) 各种乐器的弹奏(play )方法各不相同。
编写一个测试类 InstrumentTest ,要求:编写方法testPlay ,对各种乐器进行弹奏测试。
要依据乐器的不同,进行相应的弹奏。
在main 方法中创建不同的乐器对象,通过testPlay 的弹奏测试方法进行测试。
5、 定义Fight 接口,其中有一个打人的动作(fight )。
让胖人(FatFat )和瘦人(Thi nth in )分别实现打人接口,但具有不同的打人结果: 胖人打人疼,瘦人打人不疼。
编写测试类,使用多态的方式对不同人打人的动作进行测试,输出胖人和瘦人打人的动作。
6、 7、8、 医生(Doctor )有姓名(name )、编号(idNumber )和地址(address )等基本信息, 还都具有量体温 (temperature )和开药(giveMedicine )的方法。
巴士是汽车吗? 卡车是汽车吗? 出租车是汽车吗?引擎数量 外观颜色 品牌 车牌 刹车 加速属性,行为请问:出租车 包含哪些属性 和行为呢? 最大载客数量报站 让座提示最大载重量 卸货汽车医生又分为普通医生和主治医生。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/********
以下作业在代码编写过程中要按照注释规范对类,方法,属性,局部变量进行注释 关键代码片段也需要进行注释说明 ********/
1、 根据如下图示,使用继承编写出对应的程序。
然后分别创建对应的车辆,调用方法输出
车辆信息,并测试每辆车包含的其他方法。
尽量让你的程序变得有意思一些(属性和方法可添加和扩展)。
2、 请编码实现动物世界的继承关系:
动物(Animal )具有行为:吃(eat )、睡觉(sleep ) 动物包括:兔子(Rabbit ),老虎(Tiger )
这些动物吃的行为各不相同(兔子吃草,老虎吃肉);但睡觉的行为是一致的。
请通过继承实现以上需求,并编写测试类AnimalTest 进行测试
3、 请使用接口编码实现如下需求:
乐器(Instrument )分为:钢琴(Piano)、小提琴(Violin) 各种乐器的弹奏( play )方法各不相同。
编写一个测试类InstrumentTest ,要求:
编写方法testPlay ,对各种乐器进行弹奏测试。
要依据乐器的不同,进行相应的弹奏。
在main 方法中创建不同的乐器对象,通过testPlay 的弹奏测试方法进行测试。
4、 定义Fight 接口,其中有一个打人的动作(fight )。
让胖人(FatFat )和瘦人(Thinthin )
分别实现打人接口,但具有不同的打人结果:胖人打人疼,瘦人打人不疼。
编写测试类,使用多态的方式对不同人打人的动作进行测试,输出胖人和瘦人打人的动作。
5、 医生(Doctor )有姓名(name )、编号(idNumber )和地址(address )等基本信息,
还都具有量体温 (temperature)和开药(giveMedicine )的方法。
巴士是汽车吗? 卡车是汽车吗? 出租车是汽车吗?
最大载客数量
报站 让座提示 引擎数量 外观颜色 品牌 车牌 刹车 加速
汽车
最大载重量
卸货 所属公司 最大载客数量
打发票
行为
请问:出租车包含哪些属性和行为呢?
医生又分为普通医生和主治医生。
普通医生具有上述所有信息。
主治医生除以上基本信息之外还有特有的信息:专业(speciality ),以及特有的方法会诊(consultation )。
重写开药(giveMedicine )方法,普通医生只能开具普通药物,主治医生除了开具普通药物之外还可以开具处方药。
请根据他们之间的关系,创建一个Doctor 类,包含有关医生的基本信息,在利用继承写一个普通医生(CommDocotor )和主治医生(AdvanceDoctor ),并创建测试类Test.java 在main 方法中利用这些类的对象测试显示他们的各自的信息。
6、 用面向对象的思想编写类,描述汽车,宝马,奔驰车和驾驶员的关系.
提示:宝马和奔驰继承自汽车类,具有启动,运行,停止的方法。
驾驶员具有驾驶方法,可以通过驾驶方法驾驶各种类型的汽车。
7、 根据如下图示,使用接口编写出对应的程序。
然后创建一个负责打印的测试类,并创建一个测试打印方法,将打印机接口作为参数,可以使用传入的打印机打印信息。
分别创建不同类型的打印机对象,然后通过打印测试类的测试打印方法进行测试,调用打印机的打印方法。
体会多态的优点。
8、 电脑主板上的PCI 插槽的规范就类似于Java 接口 。
彩色打印机
打印机
黑白打印机
打印效果:彩色
打印效果:黑白
打印
打印
创建一个PCI 接口:包括start 启动,和stop 停止方法。
创建声卡SoundCard.java 实现该接口,启动输出“Du du...”,停止输出“Sound stop ” 网卡SoundCard 实现该接口,启动输出“Send...”,停止输出“Network stop ” 显卡DisplayCard 实现该接口,启动输出“show...”,停止输出“Display stop ” 然后使用Java 接口作为类型,创建对应的对象,调用相应的方法实现测试。
9、 升级第7题题,创建MainBoard 主板类,创建usePCICard 方法,模拟主板上可以插
入任意符合PCI 插槽规范的卡,将PCI 接口作为参数类型,调用对应的启动和停止方法。
然后创建不同的的PCI 对象,使用usePCICard 测试,体会通过更换实现接口的类来更换系统的实现。
10、 升级第1题,为汽车添加运行状况方法,重写车辆的运行状况方法:出租车输出,
正在送乘客前往机场;卡车输出,疯狂拉土车正在全速奔跑;巴士输出,人太多了坐下一辆。
分别实例出租车,卡车,巴士对象,并测试输出车辆信息,调用方法测试不同对象的方法。
定义跟踪车辆运行状况的类CheckCar ,再创建方法checkCarState ,使用多态实现对各种车辆运行状况的检查。
声卡
显卡
网卡 每种卡的内部结构都不相同,可以把声卡、
网卡、显卡都插在PCI 插槽上,而不用担心哪个插槽是专门插哪个卡的
主板
11、定义常量接口Constant,在其中定义如下系统中所需的静态常量。
3.1415926; // 圆周率
8844.43; // 喜马拉雅
180; // 三角形内角和
300000; // 光速,单位(公里/秒)
"你好"; //中文问候
12、编写接口Addition,定义add方法,参数是两个int类型,编写此接口的两种实现,
一种是将参数相加后输出,一种是相连后输出。
编写测试类进行测试。
13、鼠标(Mouse)和打印机(Printer)类都实现了USB接口,USB接口具有输入(in)
和输出(out)的动作。
鼠标具有属性整型的x和y坐标,还具有布尔型的left和right属性,代表按下了左键和右键。
鼠标的输出方法可以输出鼠标的品牌,当前按下了左键还是右键,以及当前的x和y坐标。
输入方法不具体实现。
打印机具有属性字符串型的打印内容,输出方法可以提示**品牌的打印机打印内容成功。
打印机还有打印print()方法,可以输出当前的的打印内容
14、二战期间,战争国间谍活动非常密切,所有英国间谍(BritishSpy)有讲英语的特
点(speak()方法),所有德国间谍(GermanSpy)都具有讲德语的特点(sprechen方法)。
还有一种双重间谍,既可以讲英语又可以讲德语,可以分别输出Hello和Gutentag。
情报机关(Agency)具有两个方法一个是军情5处(toMI5)的间谍测试方法,可以传入英国间谍,并调用讲英语的方法,输出结果;另一个是德国情报处(inGermany)的间谍测试方法,可以传入德国间谍,并调用讲德语的方法,输出结果。
创建德国间谍和英国间谍分别进行测试。
创建双重间谍进行测试,看是否能同时通过军情5处和德国情报处的间谍检测。
提示:定义两个接口BritishSpy(英国间谍)和GermanSpy(德国间谍)。
15、使用面向对象的思想实现龟兔赛跑。
提示:创建Rabbit和Tortoise类分别代表兔子和乌龟,分别具有属性speed代表兔子和乌龟的速度;具有方法run代表跑步动作,run方法有一个类型为double的参数,代表跑步的长度,通过长度除以速度计算出跑步所需的时间,并输出。
创建Match类代表比赛类,定义length属性代表比赛的跑步长度,定义begin方法,将兔子和乌龟作为参数传入,在方法中分别调用兔子和乌龟的跑步方法,输出跑步所需的时间。
创建测试类进行测试
输出结果:。