知识单元三 面向对象-3

1. 下列哪个叙述是正确的? [单选题] *

没有实体的对象称作空对象,程序运行时,如果一个空对象调用实例方法也不会发生异常

类的名字习惯上遵守下划线规则

一个类声明的两个对象如果具有相同的引用,二者就具有完全相同的变量(实体)(正确答案)

如果在类中显示地定义了构造方法,Java编译器还继续提供默认的不带参数的构造方法

2. "A派生出子类B,B派生出子类C,并且在Java源代码中有如下声明:Aa0=newA();Aa1=newB();Aa2=newC();问以下哪个说法是正确的?" [单选题] *

只有第1行能通过编译

12行能通过编译,但第3行编译出错

123行能通过编译,但第23行运行时出错

1行、第2行和第3行的声明都是正确的(正确答案)

3. 设有下面两个类的定义。
class Person{
long id;//身份证号
String name;//姓名
class Student extends Person{
int score;//入学总分
int getScore(){
return score;
}}
则类Person和类Student的关系是?" [单选题] *

包含关系

继承关系(正确答案)

关联关系

上述类定义有语法错误

4. 下列叙述中,正确的是? [单选题] *

子类继承父类的所有属性和方法

子类可以继承父类的私有的属性和方法

子类可以继承父类的公有的属性和方法(正确答案)

创建子类对象时,父类的构造方法都要被执行

5. 下列叙述中错误的是? [单选题] *

一个子类可有多个父类(正确答案)

父类派生出子类

子类继承父类

一个子类只能有一个父类

6. 对于子类的构造函数说明,下列叙述中不正确的是? [单选题] *

子类无条件地继承父类的无参构造函数

子类可以在自己的构造函数中使用super关键字来调用父类的含参数构造函数,但这个调用语句必须是子类构造函数的第一个可执行语句

在创建子类的对象时,将先执行继承自父类的无参构造函数,然后再执行自己的构造函数

子类不但可以自动执行父类的无参构造函数,也可以自动执行父类的有参构造函数(正确答案)

7. 同一类中有两个以上方法同名称方法重载,Java语言规定() [单选题] *

不允许重载

父类的方法与子类的方法不构成重载

重载方法的参数表必须不同(正确答案)

重载方法的返回值类型必须不同

8. 下述代码的执行结果是()
class Super{
public int getLength(){
return 4;
} }
public class Sub extends Super{
public long getLength(){
return 5;
}
public static void main(String[] args){
Super sooper=new Super();
Super sub=new Sub();
System.out.println(sooper.getLength()+","+sub.getLength());
}} [单选题] *

4,4

4,5

5,4

代码不能被编译(正确答案)

9. 下列哪个叙述是正确的? [单选题] *

如果在子类中想使用被子类隐藏的成员变量或方法就需要使用关键字super(正确答案)

子类不可以声明和父类同名的成员变量

子类继承父类的构造方法

子类不可以定义和父类同名的方法

10. 对于下列代码,哪个叙述是正确的?
class People{
People(int m){}
}
class Student extends People{} [单选题] *

可以用People类以及无参构造方法创建对象:new People()

可以用Student类以及无参构造方法创建对象:new Student()

代码无法通过编译。原因是,父类People已经没有了不带参数的构造方法,而子类Student构造方法默认调用People类的无参构造方法(正确答案)

People类不能创建对象

11. "对于下列代码,哪个叙述是正确的?
class Animal{
int m;
Animal(){
m=100;
}
Animal(int m){
this.m=m;
}}
class Dog extends Animal{
Dog(){
m+=10;
}}
public class E{
public static void main(String args[]){
Dog dog=new Dog();
System.out.println(dog.m);
}}" [单选题] *

有编译错误

运行输出结果是10

运行输出结果是100

运行输出结果是110(正确答案)

12. 对于下列代码,哪个叙述是正确的?
class Animal{
int m;
Animal(){
m=100;
}
Animal(int m){
this.m=m;
}}
class Dog extends Animal{
Dog(){
super();
m+=10;
}}
public class E{
public static void main(String args[]){
Dog dog=new Dog();
System.out.println(dog.m);
}} [单选题] *

有编译错误

运行输出结果是10

运行输出结果是18(正确答案)

运行输出结果是110

13. 以下程序正确的输出是()
package test.father;
public class FatherClass{
public FatherClass(){
System.out.println("FatherClassCreate");
}}
package test.child;
import test.father.FatherClass;
public class ChildClass extends FatherClass{
public ChildClass(){
System.out.println("ChildClassCreate");
}
public static void main(String[]args){
FatherClass fc=new FatherClass();
ChildClass cc=new ChildClass();
}} [单选题] *

第一行FatherClassCreate第二行FatherClassCreate第三行ChildClassCreate(正确答案)

第一行FatherClassCreate第二行ChildClassCreate第三行FatherClassCreate

第一行ChildClassCreate第二行ChildClassCreate第三行FatherClassCreate

第一行ChildClassCreate第二行FatherClassCreate

14. 关于被私有访问控制符private修饰的成员变量,以下说法正确的是() [单选题] *

可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类

可以被两种类访问和引用:该类本身、该类的所有子类

只能被该类自身所访问和修改(正确答案)

只能被同一个包中的类访问

15. 若在某一个类定义中定义有如下的方法:final void workDial()该方法属于 [单选题] *

本地方法

最终方法(正确答案)

静态方法

抽象方法

16. 下列哪个叙述是正确的? [单选题] *

如果子类可以继承父类的某个方法,那么子类就有权利重写这个方法(正确答案)

子类在方法重写时,可以把父类的类(static)方法重写为实例方法

子类在方法重写时,可以把父类的实例方法重写为类(static)方法

子类在方法重写时,可以重写父类的final方法

17. 类中的某个方法是用final修饰的,则该方法() [单选题] *

是虚拟的,没有方法体

是最终的,不能被子类继承

不能被子类同名方法复盖(正确答案)

不能被子类其它方法调用

18. 下列关于 interface 的说法正确的是( )
[单选题] *

interface 中可以有 private 方法

interface 中可以有 final 方法

interface 中可以有 function 实现

interface 可以继承其他 interface(正确答案)

19. 接口是 Java 面向对象的实现机制之一,以下说法正确的是( )
[单选题] *

Java 支持类的多继承,一个类可以实现多个接口

Java 只支持类的单继承,但一个类可以实现多个接口(正确答案)

Java 只支持类的单继承,一个类只可以实现一个接口

Java 支持类的多重继承,但一个类只可以实现一个接口

20. 在JAVA中,已定义两个接口B和C,要定义一个实现这两个接口的类,以下语句正确的是( )
[单选题] *

interface A extend B,C

interface A implements B,C

class A implements B,C(正确答案)

class A implements B, implements C

21. 以下哪个接口的定义是正确的( )。 [单选题] *

interface B{ void print() { } }

abstract interface B { void print() }

abstract interface B extends A1,A2 { abstract void print(){ }; }

interface B { void print();}(正确答案)

22. 下列哪个叙述是正确的?
[单选题] *

能用public修饰接口(正确答案)

能用protected修饰接口

能用final修饰接口

能用private修饰接口

23. "对于下列Com接口(Com.java)类,哪个叙述是错误的?
interface Com{
int MAX=100;
void stop();
abstract void start();
}" [单选题] *

void stop();会导致编译出错(正确答案)

编译器认为void stop();就是public abstract void stop();

编译器认为abstract void start();就是public abstract void start();

编译器认为int MAX=100;就是public static final int MAX=100;

24. "下列ABCD注释标注的哪行代码有错误?
class A{
static int m;
static void f(){
m=20; //A
}
}
class B extends A{
void f(){ //B
m=222; //C
}
}
class E{
public static void main(String args[]){
A.f(); //D
}
}" [单选题] *

A

B(正确答案)

C

D

25. 下列哪个叙述是正确的?
[单选题] *

abstract类中,必须要有abstract方法

子类和父类必须在一个包中

abstract类中用户不能写构造方法

如果一个类中有abstract方法,这个类必须是abstract(正确答案)

26. 下列哪一个叙述是正确的? [单选题] *

和接口有关的匿名类可以是抽象的

和类有关的匿名类还可以额外地实现某个指定的接口

和类有关的匿名类一定是该类的一个非抽象子类(正确答案)

和接口有关的匿名类的类体中可以有static成员变量

27. 请分析以下代码能否被放置在相应的位置上
class Demo{ 
  public void func(){      
     //位置1    } 
  class Inner{} 
  public static void main(String [] args){     
     Demo d=new Demo();     
        //位置2 
  }} [单选题] *

位置1new Inner();(正确答案)

位置2new Inner();

位置2new d.Inner();

位置2new Demo.Inner();

28. 编译下列E.java得到E$1.class,E.class,HelloMachine.class,SpeakHello.class字节码文件。下列哪个叙述是正确的?
interface SpeakHello{
void speak();
}
class HelloMachine{
public void turnOn(SpeakHello hello){
hello.speak();
}
}
public class E{
public static void main(String args[]){
HelloMachine machine=new HelloMachine();
machine. turnOn(new SpeakHello(){
public void speak(){
System.out.println(“hello,you are welcome!”);
}
});
}
} [单选题] *

E$1.class是接口匿名类的字节码(编译器给该匿名类的名字是E$1(正确答案)

E.class是接口匿名类的字节码

HelloMachine.class是接口匿名类的字节码

SpeakHello.class是接口匿名类的字节码

29. 下列哪个叙述是错误的?
[单选题] *

匿名类没有构造方法(正确答案)

匿名类只有一个不带参数的构造方法(编译器会给匿名类一个名字和构造方法)

匿名类一定是final

匿名类一定是内部类

30. 下列代码运行输出的结果是
abstract class A{
abstract int get();
}
class People{
int computer(A a){
return a.get()*2;
}
}
class E{
public static void main(String[] args){
People p=new People();
int m=p.computer(new A(){
int m=100; 
public int get(){ 
return 100+m; 
}
});
System.out.println(m);
}
} [单选题] *

2

100

200

400(正确答案)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Meteor.792

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

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

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

打赏作者

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

抵扣说明:

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

余额充值