当前位置:
文档之家› 第08章_课后作业_抽象类、接口、包和常用API
第08章_课后作业_抽象类、接口、包和常用API
public void f(){System.out.print(max);} } class ClassB{ void g(InterfaceA a){a.f();} } public class E { public static void main(String[] args) { ClassB b=new ClassB(); b.g(new ClassA()); } } A.编译正确,但无运行结果 B.100 C.编译错误:b.g(new ClassA()) D.以上都不对 3.下列有关抽象类与接口的叙述中正确的是哪一个(D) 。 A.抽象类中必须有抽象方法,接口中也必须有抽象方法。 B.抽象类中可以有非抽象方法,接口中也可以有非抽象方法。 C.抽象类中的变量定义时必须初始化,而接口中不是。 D.含有抽象方法的类必须是抽象类,接口中的方法必须是抽象方法。 4.从下列程序中你发现了几处错误(D) 。 abstract class A{ public abstract void f(){}; } class B extends A{ void f(){ System.out.print("I am subclass"); } } public class E { public static void main(String[] args) { A a=new A(); a.f(); } } A.1 B.2 C.3 D.4 5.下列叙述正确的是(A) 。 A.一个类只可以继承另一个类,但可以实现多个接口。 B.抽象类可以定义为 final 类,但抽象方法不可以定义为 final 方法。 C.一个类实现了一个接口,那么这个类必须实现这个接口的所有接口方法。 D.类可以继承另一个类,但接口不可以继承另一个接口。
三、选择题
1.在使用 interface 声明一个接口时,只可以使用哪个修饰符修饰该接口(D) 。 A.private B.protected C.private protected D.public 2.下列程序运行的结果是(B) 。 interface InterfaceA{ int max=100; void f(); } class ClassA implements InterfaceA{
A.100 100 100 100 B.编译错误:max 在类 ClassB 没有定义 C.编译错误:max 不能通过对象名 b 来访问 D.编译错误:max 不能通过接口名 InterfaceA 来访问 9.下列程序运行的结果是(C) 。 interface InterfaceA{ int max=100; void f(); } interface InterfaceB extends InterfaceA{ void g(); } class ClassA implements InterfaceB{ public void g(){ System.out.print("I am ClassA"); } } public class E { public static void main(String[] args) { ClassA a=new ClassA(); a.g(); } } A.I am ClassA B.编译错误:InterfaceB 不能继承 InterfaceA C.编译错误:ClassA 没有实现接口方法 f D.以上都不对 10.下列程序运行结果是(A) 。 interface InterfaceA{ int max=100; void f(); } abstract class ClassA{ abstract void g(); } class ClassB extends ClassA implements InterfaceA{ void g(){System.out.print(max);} public void f(){System.out.print(" "+max);} } public class E { public static void main(String[] args) { ClassA a=new ClassB(); InterfaceA b=new ClassB(); a.g();
二、简答题
1. 举出常用的类、包及接口,各举出 5 个。 2. 抽象类和接口之间的区别? 3. 抽象类可以为 final、private? 4. String s = new String("xyz");创建了几个对象? 5. 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类 (concrete class) 6.是否可以继承 String 类?
6.下面哪些类实现了下列接口(D) 。 interface J_Interface{ int mb_method(int data); int mb_function(int index); } A.class J_Class implements J_Interface{ int mb_method(){return 1;} int mb_function(){return 2;} } B.class J_Class extends J_Interface{ int mb_method(int data){return 1;} int mb_function(int index){return 2;} } C.class J_Class implements J_Interface{ int mb_method(int data){return 1;} int mb_function(int index){return 2;} } D.class J_Class implements J_Interface{ public int mb_method(int index){return 1;}; public int mb_function(int data){return 2;}; } 7.public interface Foo{ int k = 4; } 下面哪一项与以上接口中的第二行不等价?D A.final int k = 4; B.public int k = 4; C.static int k = 4; D.private int k = 4; 8.下列程序运行的结果是(A) 。 interface InterfaceA{ int max=100; } class ClassA implements InterfaceA{} class ClassB extends ClassA{} public class E { public static void main(String[] args) { ClassB b=new ClassB(); System.out.print(b.max); System.out.print(" "+ClassB.max); System.out.print(" "+ClassA.max); System.out.print(" "+InterfaceA.max); } }
抽象类、接口、包和常用 API
知识点:抽长度栈和动态栈,完成入栈和出栈。 (注:测试接口。 ) 2. 编写一个方法,输出在一个字符串中,指定字符串出现的次数。 3. 1)编 2 个接口:InterfaceA 和 InterfaceB; 在接口 InterfaceA 中有个方法 void pintCapitalLetter(); 在接口 InterfaceB 中有个方法 void pintLowercaseLetter(); 2)然后写一个类 Print 实现接口 InterfaceA 和 InterfaceB, 要求 pintCapitalLetter()方法实现输出大写英文字母的功能, pintLowercaseLetter()方法实现输出小写英文字母的功能。 3)再写一个主类 E,在主类 E 的 main 方法中创建 Print 的对象并赋值给 InterfaceA 的 变量 a,对象 a 调用 pintCapitalLetter 方法; 4)最后再在主类 E 的 main 方法中创建 Print 的对象并赋值给 InterfaceB 的变量 b, 对象 b 调用 pintLowercaseLetter 方法。
b.f(); } } A.100 100 B.编译正确,但无运行结果 C.编译错误:InterfaceA b=new ClassB(); D.以上都不对 11. 已知: interface I { } class A implements I { } class B extends A { } class C extends B { public static void main(String[] args) { B b = new B(); _____________ } } 在横线处添加哪条语句运行时会产生异常 (A)A a = b; (B)I i = b; (C)C c = (C)b; (D)B d = (B)(A)b; 12. 已知: class Animal { public abstract String noise(); } class Dog extends Animal { public String noise() { return “wang wang”;} } class Cat extends Animal { public String noise() { return “miao miao”; } } class C { public static void main(String[] args) { Animal animal = new Cat(); Dog dog = (Dog)animal; System.out.println(dog.noise()); } } 的输出为 (A)wang wang (B)maio miao (C)编译错误 (D)运行时异常