2--java基础及面向对象试题 下载本文

C.输出:a D.输出:b

26、关于下列代码说法正确的是:

public class Foo {

public int add(int a, int b) { return a + b; }

public static void main(String[] args) { Foo foo = null;

System.out.println(foo.add(10, 20)); } }

A.编译错误

B.正常运行,但无结果输出 C.运行输出:30

D.运行时抛出NullPointerException异常 27、下列说法正确的有:

A.class中的constructor不可省略

B.constructor必须与class同名,但方法不能与class同名 C.constructor在一个对象被实例化时执行 D.一个class只能定义一个constructor

28、关于 Java 中继承的特点,下列说法正确的是: A.使类的定义复杂化

B.Java 只支持单继承,不可多继承,但可以通过实现接口来达到多继承的目的 C.子类继承父类的所有成员变量和方法,包括父类的构造方法 D.不可以多层继承,即一个类不可以继承另一个类的子类

1.子类继承父类的成员变量 当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。具体的原则如下:

1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;

2)对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;

3)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。 2.子类继承父类的方法

同样地,子类也并不是完全继承父类的所有方法。

1)能够继承父类的public和protected成员方法;不能够继承父类的private成员方法;

2)对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;

3)对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。

29、下列程序运行结果是?

30、请看下列代码 class ClassA {}

class ClassB extends ClassA {} class ClassC extends ClassA {} public class Test{

public static void main(String[] args) { ClassA p0 = new ClassA(); ClassB p1 = new ClassB(); ClassC p2 = new ClassC(); ClassA p3 = new ClassB(); ClassA p4 = new ClassC(); <插入代码> } }

下列选项中放置在<插入代码>处,使程序编译正确的是: A.p0 = p1; B.p1 =p2; C.p2 = p4;

D.p2 = (ClassC)p1; 31、程序输出的结果是

class One {

public One() { System.out.print(1); }

class Two extends One { public Two() {

System.out.print(2); } }

class Three extends Two { public Three() { System.out.print(3); } }

public class Numbers { public static void main(String[] argv) { new Three(); }}C A.1 B.3 C.123 D.321 32、下面代码运行结果是:D public class Animal { public String noise() { return \}

class Dog extends Animal {

public String noise() { return \} }

class Cat extends Animal { public String noise() { return \} }

public static void main(String[] args) { Animal animal = new Dog(); Cat cat = (Cat)animal;

System.out.println(cat.noise()); } }

A.peep B.bark C.meow

D.抛出运行时异常

33、下面代码运行结果是: 34、

class SimpleCalc { public int value;

public void calculate() { value += 7; } }

public class MultiCalc extends SimpleCalc { public void calculate() { value -= 3; }

public void calculate(int multiplier) { calculate(); super.calculate(); value *= multiplier; }

public static void main(String[] args) { MultiCalc calculator = new MultiCalc(); calculator.calculate(2);

System.out.println(\ }}

A.Value is: 8

B.Value is: -8 C.Value is: 12 D.Value is: -12

35、下列数组创建和初始化的方式不正确的是: A. public class Test02 {

static final int[] a = { 100,200 };} B. public class Test02 { static final int[] a; static {

a=new int[2]; a[0]=100; a[1]=200; }}

C.public class Test02 { final int[] a; public Test02(){ a=new int[2];

a[0]=100; a[1]=200; }} D.public class Test02 { static final int[] a; static void init() { a = new int[3]; a[0]=100; a[1]=200; }}