Java面向对象程序设计5接口与抽象类

简介: Java面向对象程序设计5接口与抽象类

选择题

R1-1

分数 1

作者 王从银

单位 吉首大学

为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口。

T

F


R1-2

分数 1

作者 王从银

单位 吉首大学

abstract可以与final同时修饰同一个+类。

T

F


R1-3

分数 1

作者 王从银

单位 吉首大学

抽象类中不能有private的成员,所有的抽象方法必须存在于抽象类中。

T

F


R1-4

分数 1

作者 翁恺

单位 浙江大学

When a class implements an interface, it can define some methods of the interface as needed, and leaves some untouched.

当一个类实现一个接口时,它可以根据需要定义该接口的一些方法,并保留一些不变的方法。

T

F


R1-5

分数 1

作者 翁恺

单位 浙江大学

All abstract methods must be implemented in the first concrete subclasses in the inheritance tree.

所有抽象方法都必须在继承树的第一个具体子类中实现。

T

F


R1-6

分数 1

作者 王从银

单位 吉首大学

类在实现接口方法时必须给出方法体,并且一定要用public来修饰。

T

F


R1-7

分数 1

作者 王从银

单位 吉首大学

一个Java源文件就是由类和接口组成的。

T

F


R1-8

分数 1

作者 王从银

单位 吉首大学

抽象类必须有抽象方法。

T

F


R1-9

分数 1

作者 王从银

单位 吉首大学

一个类只能有一个父类,但一个接口可以有一个以上的父接口。

T

F


R1-10

分数 1

作者 王从银

单位 吉首大学

抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法。。

T

F


R1-11

分数 1

作者 王从银

单位 吉首大学

abstract类中定义的方法只能是abstract方法。

T

F


R1-12

分数 1

作者 王从银

单位 吉首大学

类在实现接口的方法时,必须显式地使用public修饰符。

T

F


R1-13

分数 1

作者 王从银

单位 吉首大学

如果一个类声明实现一个接口,但没有实现接口中的所有方法,那么这个类必须是abstract类。

T

F


R1-14

分数 1

作者 王从银

单位 吉首大学

一个类可以实现多个接口。

T

F


R1-15

分数 1

作者 王从银

单位 吉首大学

接口中的方法默认是public abstract方法。

T

F


R1-16

分数 1

作者 王从银

单位 吉首大学

接口中的属性,都是静态常量。

T

F


R1-17

分数 1

作者 翁恺

单位 浙江大学

All methods in an abstract superclass must be declared abstract in its derived class.

T

F

R2-1

分数 2

作者 强彦

单位 太原理工大学

下列选项中,用于实现接口的关键字是 ( )。

A.

implements

B.

abstract

C.

interface

D.

class


R2-2

分数 2

作者 翁恺

单位 浙江大学

Which one is to define an abstract method? ( )

A.

abstract void method()

B.

public void abstract method()

C.

public abstract void Method() {}

D.

public void abstract Method() { System.out.println("Hello"); }


R2-3

分数 2

作者 王从银

单位 吉首大学

在使用interface声明一个接口时,只可以使用(    )修饰符修饰该接口。

A.

private  protected

B.

private

C.

public

D.

protected


R2-4

分数 2

作者 殷伟凤

单位 浙江传媒学院

运行如下程序输出为:( )。

public class Test {
  public static void main(String[] args) {
    new Circle9();
  }
}
 
public abstract class GeometricObject {
  protected GeometricObject() {
    System.out.print("A");
  }
 
  protected GeometricObject(String color, boolean filled) {
    System.out.print("B");
  }
}
 
public class Circle9 extends GeometricObject {
  /** No-arg constructor */
  public Circle9() {
    this(1.0);
    System.out.print("C");
  }
 
  /** Construct circle with a specified radius */
  public Circle9(double radius) {
    this(radius, "white", false);
    System.out.print("D");
  }
 
  /** Construct a circle with specified radius, filled, and color */
  public Circle9(double radius, String color, boolean filled) {
    super(color, filled);
    System.out.print("E");
  }
}

A.

BACD

B.

AEDC

C.

ABCD

D.

BEDC


R2-5

分数 2

作者 殷伟凤

单位 浙江传媒学院

如下在一个Java抽象类中对抽象方法的声明哪个是正确的?

A.

public abstract method();

B.

public abstract void method();

C.

public abstract void method() {}

D.

public void abstract method();


R2-6

分数 2

作者 强彦

单位 太原理工大学

下列选项中,用于定义接口的关键字是( )。

A.

class

B.

abstract

C.

interface

D.

implements


R2-7

分数 2

作者 王从银

单位 吉首大学

下面哪个对类的声明是错误的?

A.

class MyClass extends MySuperClass1, MySupperClass2 {}

B.

private class MyClass {}

C.

public class MyClass{}

D.

abstract class MyClass implements YourInterface1, Youriterface2 {}

E.

class MyClass extends MySuperClass implements YourInterface {}


R2-8

分数 2

作者 殷伟凤

单位 浙江传媒学院

下面说法正确的是?

A.

定义抽象方法需有方法的返回类型、名称、参数列表和方法体。

B.

final可修饰类、变量、方法。

C.

用final修饰的变量,在程序中可对这个变量的值进行更改。

D.

abstract可修饰类、变量、方法。


R2-9

分数 2

作者 王从银

单位 吉首大学

欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?(   )

A.

List myList=new List();

B.

ArrayList myList=new List();

C.

List myList=new ArrayList();

D.

ArrayList myList=new Object();


R2-10

分数 2

作者 翁恺

单位 浙江大学

What will happen when you attempt to compile and run this code?

abstract class Base{
        abstract public void myfunc();
        public void another(){
            System.out.println("Another method");
        }
}
 
public class Abs extends Base{
        public static void main(String argv[]){
            Abs a = new Abs();
            a.amethod();
        }
        public void myfunc(){
                System.out.println("My Func");
        }
        public void amethod(){
            myfunc();
        }
}

A.

The compiler will complain that the Base class has non abstract methods

B.

The compiler will complain that the method myfunc in the base class has no body, nobody at all to looove it

C.

The code will compile and run, printing out the words "My Func"

D.

The code will compile but complain at run time that the Base class has non abstract methods


R2-11

分数 2

作者 殷伟凤

单位 浙江传媒学院

下面类的定义,哪个是合法的抽象类定义。

A.

class A { abstract void unfinished(); }

B.

public class abstract A { abstract void unfinished(); }

C.

abstract class A { abstract void unfinished(); }

D.

class A { abstract void unfinished() { } }


R2-12

分数 2

作者 王从银

单位 吉首大学

若A1、A2为已定义的接口 ,以下接口定义中没有语法错误的是(        ) 。

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();}


R2-13

分数 2

作者 强彦

单位 太原理工大学

在Java中,能实现多重继承效果的方式是( )。

A.

继承

B.

接口

C.

内部类

D.

适配器

填空题

R4-1

设计一个Flyable接口,一个实现Flyable接口的Duck类和Duck的子类RedheadDuck。

@@[interface](1) Flyable {
    void fly();
}
@@[abstract](1) class Duck @@[implements](1) Flyable {
    public @@[void](1) quack() {
    System.out.println("我会呱呱呱");
}
public void @@[swim](1)() {
    System.out.println("我会游泳");
}
public @@[abstract](1) void display()@@[;](1)
    @Override
    @@[public](1) void fly() {
    System.out.println("我会飞");
    }
}
class RedheadDuck @@[extends](1) Duck {
    public void @@[display](1)() {
    System.out.println("我是一只红头鸭");
    }
}
public class Main {
    
    public @@[static](1) void @@[main](1)(String[] args) {
        Duck @@[rduck](1) = new @@[RedheadDuck](1)();
        rduck.display();
        @@[rduck](1).quack();
        rduck.swim();
        rduck.fly();
    }
}

R4-2

接口中的方法的默认的访问权限是@@[public](2)。

R4-3

设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下:

(1)编写接口Animal

Animal接口有2个抽象方法.

(2)编写实现Animal接口的Dog类。

(3)编写主类SimulateTest,在主类SimulateTest的main方法中编写程序进行测试,输出以下结果:

我的名字叫Bob

汪汪

@@[interface](1) Animal   {
      void @@[cry()](1);
      String @@[ getName()](1);
}
class Dog @@[implements](1) Animal  {
       private @@[String](1) name;
       Dog(String name) {
              @@[this.name](1) = name;
      }
      @Override
      @@[public](1) void cry() {
              System.out.println("汪汪");
      }
      @Override
      public String getName() {
               @@[return](1) "我的名字叫"+name;
     }
}
public class @@[SimulateTest](1) {
       public @@[static](1) void @@[main](1)(String[] args) {
           Animal @@[dog](1) = new Dog("@@[Bob](1)");
           System.out.println(dog.@@[getName()](1));
           @@[dog](1).cry();
       }
}

 

R4-3

运行以下程序:

public class Main {
  public static void main(String[] args) {
    new Circle9();
 
  }
}
 
abstract class GeometricObject {
  protected GeometricObject() {
    System.out.print("A");
  }
 
  protected GeometricObject(String color, boolean filled) {
    System.out.print("B");
  }
}
 
class Circle9 extends GeometricObject {
  /** No-arg constructor */
  public Circle9() {
    this(1.0);
    System.out.print("C");
  }
 
  /** Construct circle with a specified radius */
  public Circle9(double radius) {
    this(radius, "white");
    System.out.print("D");
  }
 
  /** Construct circle with a specified radius and color */
  public Circle9(double radius, String color) {
    this(radius, "white", false);
    System.out.print("E");
  }
 
  /** Construct a circle with specified radius, filled, and color */
  public Circle9(double radius, String color, boolean filled) {
    super(color, filled);
    System.out.print("F");
  }
}

BFEDC

R4-5

以下程序输出四个图形面积,请在空格处填上合适的内容。

public class Main
{
public @@[static](2) void main(String args[])
{
@@[Shape](2) ss[] = @@[new](2) Shape[4];
ss[0] = new Rect(10,10);
ss[1] = new Rect(8, 12);
ss[2] = new Circle(5);
ss[3] = new Circle(6);
for(int i = 0; i < ss.@@[length](2); i++)
{
System.out.println( @@[ss[i]](2).getArea());
}
}
}
@@[abstract](2) class Shape
{
@@[abstract](2) int getArea();
}
class Rect @@[extends](2) Shape
{
int width;
int height;
@@[Rect](2)(int width, int height)
{
this.width = width;
this.height = height;
}
int getArea()
{
@@[return](2) width * height;
}
}
class Circle @@[extends](2) Shape
{
int radius;
Circle(@@[int](2) radius)
{
@@[this.radius](2) = radius;
}
int getArea()
{
@@[return](2) @@[(int)](2)(3.14 * radius * radius + 0.5);
}
}

R4-6

设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下:

(1)编写接口Animal

Animal接口有2个抽象方法.

(2)编写实现Animal接口的Dog类。

(3)编写主类SimulateTest,在主类SimulateTest的main方法中编写程序进行测试,输出以下结果:

我的名字叫Bob

汪汪

@@[interface](1) Animal   {
      void @@[cry()](1);
      String @@[ getName()](1);
}
class Dog @@[implements](1) Animal  {
       private @@[String](1) name;
       Dog(String name) {
              @@[this.name](1) = name;
      }
      @Override
      @@[public](1) void cry() {
              System.out.println("汪汪");
      }
      @Override
      public String getName() {
               @@[return](1) "我的名字叫"+name;
     }
}
public class @@[SimulateTest](1) {
       public @@[static](1) void @@[main](1)(String[] args) {
           Animal @@[dog](1) = new Dog("@@[Bob](1)");
           System.out.println(dog.@@[getName()](1));
           @@[dog](1).cry();
       }
}

R4-7

分数 4

作者 翁恺

单位 浙江大学

请写出以下程序运行结果:

package test;
public class Test {
public static void main(String[] args) {
Test t = new Test();
t.show(new Car(){
public void run(){
System.out.println("test run");
}
});
}
public void show(Car c){
c.run();
c.show();
}}
abstract class Car{
public void run(){
System.out.println("car run");
}
public void show(){
System.out.println(getClass().getName());
}}

R4-7

请写出以下程序运行结果:

package test;
public class Test {
public static void main(String[] args) {
Test t = new Test();
t.show(new Car(){
public void run(){
System.out.println("test run");
}
});
}
public void show(Car c){
c.run();
c.show();
}}
abstract class Car{
public void run(){
System.out.println("car run");
}
public void show(){
System.out.println(getClass().getName());
}}
@@[test run](2)
@@[test.Test$1](2)


目录
相关文章
|
5天前
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
27 5
|
3月前
|
Java
在Java中,接口之间可以继承吗?
接口继承是一种重要的机制,它允许一个接口从另一个或多个接口继承方法和常量。
280 60
|
3月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
200 58
|
2月前
|
数据采集 JSON Java
利用Java获取京东SKU接口指南
本文介绍如何使用Java通过京东API获取商品SKU信息。首先,需注册京东开放平台账号并创建应用以获取AppKey和AppSecret。接着,查阅API文档了解调用方法。明确商品ID后,构建请求参数并通过HTTP客户端发送请求。最后,解析返回的JSON数据提取SKU信息。注意遵守API调用频率限制及数据保护法规。此方法适用于电商平台及其他数据获取场景。
|
2月前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
60 6
|
2月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
35 1
|
3月前
|
Java API
Java中内置的函数式接口
Java中内置的函数式接口
44 2
|
测试技术 数据库 Android开发
0008Java安卓程序设计-ssm基于Android平台的健康管理系统
0008Java安卓程序设计-ssm基于Android平台的健康管理系统
81 0
|
关系型数据库 MySQL Android开发
0006Java安卓程序设计-ssm基于Android的校园二手商品交易平台1
0006Java安卓程序设计-ssm基于Android的校园二手商品交易平台
132 0
|
SQL 关系型数据库 MySQL
0019Java程序设计-SSM + MySQL 家庭医生预约平台
0019Java程序设计-SSM + MySQL 家庭医生预约平台
195 0

热门文章

最新文章