Java面向对象选择题4

1.下边程序运行的结果是?实例化子类对象要看父类( )

class Base{
    Base(){System.out.plintln("Base");}
}
public class Alpha extends Base{

    public static void main(String[] args){
    new Alpha();
    new Base();
    }
}

A Base
B BaseBase
C 程序编译失败
D 程序运行但没有

答案:B
难度等级:简单
解析:
在实例化子类的同时执行子类的构造函数,但执行执行子类构造函数时,会先执行父类的构造函数

2.下列说法正确的是?()

A 一个子类可以有多个父类,一个父类也可以有多个子类
B 一个子类可以有多个父类,但一个父类只可以有一个子类
C 一个子类可以有一个父类,但一个父类可以有多个子类
D 上述说法都不对

答案:C
难度等级:简单
解析:
选项A 一个子类只能有一个父类,java是单继承,一个父类是可以有多个子类
选项B 一个子类只能有一个父类,java是单继承,一个父类是可以有多个子类
选项C 正确

3.下面程序运行的结果是?()

abstract class AbstrtIt{
    abstract float getFloat();
}
public class AbstrcTest extends AbstactIt{
    private float f1=1.0f;
    private float getFloat(){return f1;}
}

A 编译成功
B 在第6行产生一个运行时异常
C 在第6行产生一个编译错误
D 在第2行产生一个编译错误

答案:C
难度等级:简单
解析:
子类重写方法的可见性不能小于父类方法的可见性

4.不能用来修饰interface的有(多项)( )

A private
B public
C protected
D static

答案:ACD
难度等级:简单
解析:
接口的修饰符可以用public或abstract ,也可以不写

5.下列说法错误的有()

A 在类方法中可用this来调用本类的类方法
B 在类方法中调用本类的类方法时可直接调用
C 在类方法中只能调用本类的类方法
D 在类方法中绝对不能调用实例方法

答案:CD
难度等级:简单
解析:
选项C 也可以调用其它类的方法,但前提是把其他类的对象作为函数的对象传递到当前方法中
选项D 在类方法中可以调用实例的方法,this.method(),this指代的就当前实例对象

6.下列说法错误的有()

A Java面向对象语言容许单独的过程与函数存在
B Java面向对象语言容许单独的方法存在
C Java语言中的方法属于类中的成员
D Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同

答案:ABC
难度等级:简单
解析:
java中一切皆对象

7.

1)class Super{
    2)public float getNum{return 3.0f};
3) }
4)
5)public class Sub extends Super{
6)
7) }

根据以上代码回答问题:放置什么方法在第6行,否则会引起编译错误?

A public float getNum(){return 4.0f;}
B public void getNum(){}
C public void getNum(double d)
D public double getNum(float d){return 4.0d;}

答案:AB
难度等级:简单
解析:
重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。

8.下列程序

class Top{
    public Top(String s){
        System.out.plintln("B");
    }
}
public class Bottom extends Top{
    public Bottom(String s){
        System.out.plintln("D");
    }
    public static void main(String[] args){
        new Bottom("C");
        System,out,plintln("");
    }
}

输出结果是:

A BD
B DB
C BDC
D DBC
E 编译错误

答案:E
难度等级:简单
解析:
public Bottom(String s){//这行代码报错,提示在父类Top中缺少一个Top()的构造函数

9.若有以下接口的定义:public interface IA extends IB ,IC,ID{…….}

A 这个接口的声明是错误的
B 接口IA继承了接口IB,IC和IC
C 接口IA实现了接口IB,IC和ID
D 关键字extends指明接口的继承关系

答案:BD
难度等级:简单
解析:
接口的继承是用extends,同时可以继承多个接口

10.以下说法不正确的是()

A .private修饰的成员变量可以在本类或者其本类中子类中使用
B Java类可以同时实现多个接口,因此它支持多继承
C Java中,类的所有成员变量必须在对象实例化之后才可以使用
D Java中,类的成员变量可以使用abstract修饰符

答案:ABCD
难度等级:
解析:
选项A private修饰的成员,在本类是可以访问的,但子类访问不到
选项B java类可以实现多个接口,但java支持单继承
选项C 类的成员变量如果是静态的,在类加载的时候就占用空间了,可以通过类名访问
选项D abstract,可以修饰在类上,接口上,方法上,不能修饰在其他的地方

11.

public class Base{
    public void method(int i){}
}
public class Test extends Base{
    public static void main(String args[]){

    }
    //此处插入方法
}

下面哪一个方法可以插入上面代码的注释处()

A public void method(int i)throws Exception{}
B public void methid(long i)thows Exception{}
C public void method(int i,float f)throws Exception{}
D public void method(int i){}
E 以上都不对

答案:E
难度等级:简单
解析:
方法的重写

12.在Java中,定义了两个接口B和C,要定义一个实现这两个接口的类,以下语句正确的是()

A interface A extends B,C
B interface A implements B,C
C class A implements B,C
D class A implements B,implements C

答案:A
难度等级:简单
解析:
接口继承多个接口,且关键字用extends

13.关于方法重写(override)下列哪些说法是不正确的?()

A 方法名必须保持一致
B 方法参数和返回值得类型必须一致
C 复写方法的访问修饰符不能更严格
D 可以抛出被复写方法没有申明的异常

答案:D
难度等级:简单
解析:
方法的重写

14.关于子类的异常声明,下面说法错误是:()

A 子类中的构造函数可以添加自己的异常声明
B 子类中覆写的方法可以添加自己的异常声明
C 子类中覆写的方法可以不声明父类方法中声明的异常
D 子类中覆写的方法可以只声明父类方法声明异常的子异常

答案:D
难度等级:
解析:
如果是免检异常,父子方法中的异常可以不必一样
如果是必检异常,父子方法中的异常必须要一致

15.给出以下代码的运行结果:()

class S1{
    public static void main(String[] args){
        new S2();
    }
    S1(){
        System.out.plint("S1");
    }
}
class S2 extends S1{
    S2(){
        System.out.plintln("S2");
    }
}

结果为:

A S1
B S2
C S1S2
D S2S1

答案:C
难度等级:简单
解析:
java中,在执行子类构造的时候会先调用父类的构造函数,然后再回来继续执行子类的构造函数,其实在子类构造的第一条语句有一个默认的语句是super();

16.阅读以下程序,在“//point x”处的哪些申明是句法上合法的()

class Person{
    private int a;
    public int change(int m){return m;}
}
public class Teacher extends Person{
    public int b;
    public static void main(String[] args){
        Person p=new Person();
        Teacher t=new Teacher();
        int i;
        //point x
    }
}

A i=m;
B i=b;
C i=p.a;
D i=p.change(30)
E i=t.b

答案:BDE
难度等级:简单
解析:
java的四个访问修饰符:
访问权限    类    包    子类   其他包
public       ∨     ∨     ∨      ∨
protect      ∨     ∨      ∨      ×
default      ∨     ∨      ×       ×
private      ∨      ×      ×       ×

17.下Java中,所有类的根类是()

A java.lang.Object
B java.lang.Class
C java.applet.Applet
D java.awt.Frame

答案:A
难度等级:简单
解析:
Object是java所有类的跟类

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

A 内部类
B 适配器
C 接口
D 同步

答案:C
难度等级:简单
解析:
java可以多接口实现,但不是多继承

19.int型public成员变量MAX_LENGTH,该值保持为常数100,则定义这个变量的语法是(0

A public int MAX_LENGTH=100
B fianl int MAX_LENGTH=100
C public const int MAX_LENGTH=100
D publci final int MAX_LENGTH=100

答案:D
难度等级:简单
解析:
常量用final修饰,且赋值只能一次

20.请问,以下哪些可以被内部类访问()

A 所有静态变量
B 所有常量
C 所有实例变量
D 只有实例常量
E 选择A、B、C均正确

答案:E
难度等级:简单
解析:
前提ABC的变量或常量的定义,需要放在外部类中定义

21.请选择一个正确答案:()

class Super{
    int index=5;
    public void printVal(){
        System.out.plintln("Super");
    }
}
class Sub extends Super{
    int index=2;
    public void printVal(){
        System.out.println("Sub");
    }
}
public class Example{
    public static void main(String[] args){
        Super sup=new Sub();
        System.out.println(sup.index+",");
        sup.printVal();
    }
}

A 代码编译失败
B 打印输出5.Super
C 打印输出5,Sub
D 打印输出 2,Super
E 打印输出2,Sub
F 代码编译成功,但运行异常

答案:C
难度等级:简单
解析:
多态,用父类的引用,调用的方法如果是在子类中重写过,那么就调用子类重写的方法

22.给出以下代码,请问该程序的运行结果是什么?()

class Example{
    String s="Outer";
    public static void main(String[] args){
        S2 s2=new S2();
        s2.display();
    }
}
class S1{
    String s="S1";
    void display(){
        System.out.println(s);
    }
}
class S2 extends S1{
    String s="S2";
}

请选择一个正确答案:

A S1
B S2
C null
D Outer

答案:A
难度等级:简单
解析:
多态,用父类的引用,调用的方法如果是在子类中重写过,那么就调用子类重写的方法

23.给出1条语句,请问以下哪些有关语句的描述是正确的()

private static int i=3;
请选择所有正确的答案:

A 变量i在被初始化后,其值不能再改变
B 变量i只能被静态方法改变
C 变量i的值被所有其所在类的实例共享
D 变量i只能被其所在类访问

答案:CD
难度等级:简单
解析:
静态的方法只能访问静态的变量或静态方法,非静态的方法即可以访问静态的方法或静态的变量,也可以访问非静态的方法或非静态的变量
静态的变量或方法属于类而不属于对象,所以在访问范围允许的情况下,静态的变量或方法都可以通过类名访问。虽然可以通过对象来访问静态的变量或静态的方法,但不推荐。

24.

public class Outer{
    public void someOuterMethod(){
        //line 3
    }
    public class Inner{}
    public static void main(String[] args){
        Outer o=new Outer();
        //Line 8
    }
}

which instantiates an instance of Inner?

A new Inner();//At Line 3
B new Inner();//At line 8
C new o.Inner();//At line 8
D new Outer.Inner();//At line 8

答案:D
难度等级:简单
解析:
在实例化内部类对象的时候,需要先通过定位外部类,然后通过外部类来定位内部类

25.

class A{
    protected int method1(int a,int b){return 0;}
}

Which two are valid in a class that extends class A?(Choose two)

A public int method1(int a,int b){return 0;}
B private int method1(int a,int b){return o;}
C private int method1(int a,long b){return 0;}
D public short mehod1(int a,int b){return 0;}
E static protected int method1(int a,int b){return 0;}

答案:A
难度等级:简单
解析:
java的方法重写

generated by haroopad

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java面向对象程序设计期末考试试题及答案 1. 请简要说明面向对象程序设计的三大特征。 答案:封装、继承和多态是面向对象程序设计的三大特征。封装指的是将数据和操作数据的方法封装在一起,可以通过访问权限控制提高安全性;继承指的是子类可以继承父类的属性和方法,便于代码重用;多态指的是同一个方法名可以有多种不同的实现方式,实现了代码的灵活性和扩展性。 2. 请使用Java语言编写一个简单的类,并在主函数中实例化这个类。 答案:代码如下 ```java public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } public static void main(String[] args) { Person person = new Person("Tom", 25); System.out.println("Name: " + person.getName()); System.out.println("Age: " + person.getAge()); } } ``` 3. 请简要说明抽象类和接口的区别。 答案:抽象类是一种包含抽象方法的类,不能被实例化,只能被继承;接口是一种只包含抽象方法和常量的类,实现接口的类必须实现接口中定义的所有方法。一个类可以实现多个接口,但只能继承一个抽象类。 4. 请使用多态的概念简要说明方法重写和方法重载的区别。 答案:方法重写是子类重新定义了父类的方法,实现了多态,调用父类引用指向子类对象时将调用子类的方法;方法重载是在一个类中可以定义多个方法名相同但参数列表不同的方法,通过参数的类型、个数和顺序来区分调用不同的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小乔同学Online

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值