选择题

  1. 关于Java中的多态,以下说法不正确的为( )。(选择一项)

    A 多态不仅可以减少代码量,还可以提高代码的可扩展性和可维护性

    B. 把子类转换为父类,称为向下转型,自动进行类型转换

    C. 多态是指同一个实现接口,使用不同的实例而执行不同的操作

    D. 继承是多态的基础,没有继承就没有多态

  2. 编译运行如下Java代码,输出结果是( )。(选择一项)

    class Base {
    	public void method(){
    		System.out.print ("Base method");
    	}
    }
    class Child extends Base{	
    	public void methodB(){
    		System.out.print ("Child methodB");
    	}
    }
    class Sample {
    	public static void main(String[] args) {
    		Base base= new Child();
    		base.methodB();
    	}
    }
    

    A Base method

    B. Child methodB

    C. Base method

    Child methodB

    D. 编译错误

3. 在Java中,关于引用数据类型的类型转换说法正确的是( )。(选择二项)

A 引用数据类型的类型转换有向上转型和向下转型

B. 向下转型,必须转换成其真实子类型,而不能随意转换

C. 向下转型是自动进行的,也称隐式转换

D. 向上转型可以使用instanceof操作符来判断转型的合法性

4. 给定如下Java程序,Test类中的四个输出语句输出结果依次是( )。(选择一项)

class Person {
	String name="person";
	public void shout(){
		System.out.println(name);
	}
}
class Student extends Person{
	String name="student";
	String school="school";
}
public class Test {
	public static void main(String[ ] args) {
		Person p=new Student();
		System.out.println(p instanceof Student);
		System.out.println(p instanceof Person);
		System.out.println(p instanceof Object);;
		System.out.println(p instanceof System);
	}
}

A true,false,true,false

B. false,true,false,false

C. true,true,true,编译错误

D. true,true,false,编译错误

5. Person类和Test类的代码如下所示,则代码中的错误语句是( )。(选择一项)

public class Person {
	public String name;
	public Person(String name) {
		this.name = name;
	}
}
public class Test {
    public static void main(String[] args) {
        final Person person = new Person("欧欧");
        person.name = "美美";
        person = new Person("亚亚");
    }
}

A. final Person person = new Person("欧欧");

B. person.name = "美美";

C. person = new Person("亚亚");

D. 没有错误

6. 如下Java代码运行的结果是( )。(选择一项)

public class Test {
	final int age;
	public Test(){
		age=10;
	}
	public static void main(String[ ] args) {
		System.out.println(new Test().age);
	}
}

A 输出:0

B. 输出:10

C. 输出:null

D. 运行时出现异常

7. 以下代码中错误的语句是( )。(选择一项)

**public class Something{
	public static void main(String[] args){
		final Other o=new Other();
		new Something().addOne(o);//1
	}
	public void addOne( Other o){
		o.i++;//2
		o =  new Other();//3
	}
}
class Other{
	public int i;
}**

A 1

B. 2

C. 3

D. 没有错误

8. 下列选项中,关于Java的抽象类和抽象方法说法正确的是( )。(选择二项)

A 抽象类中可以含有0个或多个抽象方法

B. 抽象类中不可以有构造方法

C. 一个类中若有抽象方法,则这个类必为抽象类

D. 子类必须重写父类所有的抽象方法

9. 在Java中关于abstract关键字,以下说法正确的是( )。(选择两项)

A abstract类中可以没有抽象方法

B. abstract类的子类也可以是抽象类

C. abstract方法可以有方法体

D. abstract类可以创建对象

10. 以下选项可替换题目中//add code here而不产生编译错误的是( )。(选择二项)

public abstract class MyClass{
	public int constInt=5;
	//add code here
	public void method( ){	
	}
}

A public abstract void method(int a);

B. constInt =constInt+5;

C. public int method( );

D. public abstract void anotherMethod( );

11. 在Java接口中,下列选项中属于有效的方法声明是( )。(选择二项)

A public void aMethod( );

B. final void aMethod( );

C. void aMethod(){ }

D. private void aMethod( );

12. 以下选项中关于匿名内部类的说法正确的是( )。(选择二项)

A. ****匿名内部类可以实现多个接口,或者继承一个父类

B. 匿名内部类不能是抽象类,必须实现它的抽象父类或者接口里包含的所有抽象方法

C. 匿名内部类没有类名,所以匿名内部类不能定义构造方法

D. 匿名内部类可以直接访问外部类的所有局部变量

13. 接口定义正确的说法是( )。(选择二项)

A. 接口中只能定义常量和抽象方法

B. 接口中可以定义普通方法和普通变量

C. 接口可以被new,抽象方法不行

D. 接口不可以被继承,只能被实现,也可以被多个类实现

判断题

  1. 将子类对象赋给父类引用变量,称为向下转型,将无法访问子类特有的方法。( )
  2. 继承是多态的基础,没有继承就没有多态。( )
  3. 声明为final的类不能是超类。( )
  4. 使用final修饰的变量将变成常量,其中不能再被改变;使用final修饰的方法将无法被子类重载;使用final修饰的类将无法再被其他类继承。( )
  5. 抽象方法不能含有方法体,并且必须定义在抽象类中。( )