【无标题】

简介: 【无标题】

1:父类对子类的引用

A 派生出子类 B , B 派生出子类 C ,并且在 java 源代码有如下声明:


A a0=new A();

A a1=new B();

A a2=new C();

问以下哪个说法是正确的?()

A.只有第一行能通过编译

B.第1、2行能通过编译,但第3行编译出错

C.第1、2、3行能通过编译,但第2、3行运行时出错

D.第1行,第2行和第3行的声明都是正确的

A虽然不是C的直接父类,但是C依然间接继承了A的内容的,此时可以发生向上转型的。

D正确。

2:如下代码的 结果是什么 ?

class Base {
  Base() {
    System.out.print("Base"); 
  }
}
public class Alpha extends Base {
  public static void main( String[] args ) {
    new Alpha();//1
    //调用父类无参的构造方法
    new Base();//2
  } 
}

A.Base

B.BaseBase

C.编译失败

D.代码运行但没有输出

E.运行时抛出异常

当子类继承父类之后,在实例化子类对象的时候,先要调用父类的构造方法,来帮助父类初始化。

故选B

3:以下程序的输出结果为

class Base{
  public Base(String s){
    System.out.print("B");
  }
}
public class Derived extends Base{
  public Derived (String s) {
    System.out.print("D");
  }
  public static void main(String[] args){
    new Derived("C");
  }
}

A.BD

B.DB

C.C

D.编译错误

当子类继承父类需要先初始化继承过来的父类的成员,此时需要通过super来完成很明显在子类的构造方法当中,并没有通过super调用父类的构造方法。正确写法应该是:

class Base{
  public Base(String s){
    System.out.print("B");
  }
}
public class Derived extends Base{
  public Derived (String s) {
    super(s);
    System.out.print("D");
  }
  public static void main(String[] args){
    new Derived("C");
  }
}

4:以下程序执行的结果是:

class X{
  Y y=new Y();//1
  public X(){//2
    System.out.print("X");
  }
}
class Y{
  public Y(){//3
    System.out.print("Y");
  }
}
public class Z extends X{
  Y y=new Y();//4
  public Z(){//5
    System.out.print("Z");
  }
  public static void main(String[] args) {
    new Z();
  }
}

A.ZYXX

B.ZYXY

C.YXYZ

D.XYZX

本题考察代码的执行顺序:

类Z继承类X。

在继承层次上,先执行父类和子类的静态的再执行父类的实例,父类的构造最后执行子类的实例和子类的构造。

根据以上顺序,我们得出结论:本题中没有静态的。所以先执行1和2,再执行4和5。执行注释1和注释4的时候,分班打印Y。故最终的结果是YXYZ。

故答案为:C

5:以下关于关键字super的描述中,正确的是:

A.super关键字只代表当前对象内部的那一块父类型特征,不包含在子类对象中

B.super关键字不仅可以指代子类的直接父类,还可以直接指代父类的父类

C.子类通过super关键字只能调用父类的方法,而不能调用父类的属性

D.子类通过super关键字只能调用父类的属性,而不能调用父类的方法


本题中主要考察关键字super。首先3种用法为:

1.super.data访问父类中的属性

2.super.func() 访问父类的方法

3.super() 访问父类的构造方法

根据这3点,选项C和D均错。

B中:super只能指代其直接父类,不能指代父类的父类

A正确,super关键字只是在代码层次上提高了代码的阅读性。在子类中代表继承过来的父类型的特征通过super.data就能知道访问的是父类的data。

6:重载的特点:

在 java 中,一个类可同时定义为许多同名的方法,这些方法的形式参数个数,类型或顺序各不相同,传回的值可能各不相同,这种面向对象的特性称为(重载)

7:以下代码运行输出的是

public class Person{
  private String name = "Person";
  int age=0;
}
public class Child extends Person{
  public String grade;
  public static void main(String[] args){
    Person p = new Child();
    System.out.println(p.name);
  }
}

A.输出:Person

B.没有输出

C.编译出错

D.运行出错

子类继承父类之后,会继承父类私有的数据,但是由于private访问修饰符的问题,子类没有办法直接反问该数据。

故编译出错。

8:在 java 中 , 一个类()

A.可以继承多个类

B.可以实现多个接口

C.在一个程序中只能有一个子类

D.只能实现一个接口

Java中一个类只能继承一个类,不能继承多个。
一个类可以实现多个接口
子类和程序之间没有限制关系

9:

public interface IService {
String NAME="default";
}

默认类型等价表示是哪一项:

作业内容

A.public String NAME=“default”;

B.public static String NAME=“default”;

C.public static final String NAME=“default”;

D.private String NAME=“default”;

接口当中的成员变量默认是:public static final
接口当中的成员方法默认是:public abstract

10:下列关于java抽象类的说法哪个正确?

A.某个抽象类的父类是抽象类,则这个子类必须重载父类的所有抽象方法

B.接口和抽象类是同一回事

C.可以用抽象类直接去实例化创建对象

D.一个类只能继承一个抽象类

A:抽象类A继承抽象类B,此时抽象类A,可以不重写抽象类B中的方法。如果是普通类继承,就得重写

B:接口和抽象类是两个事情

C:抽象类和接口都不可以实例化

D:正确

11:以下哪些方法是Object类中的方法?

A.clone()

B.toString()

C.wait()

D.finalize()

参考Object类的源码我们发现,所有方法均存在。

A:是用来进行对象的克隆

B:将对象的属性等信息,以字符串的形式输出

C:调用wait方法,当前线程进入等待状态

D:在对象被垃圾收集器析构(回收)之前调用,这个方法叫做 finalize( ),它用来清除回收对象。

故选择A,B,C,D.


目录
相关文章
|
2天前
|
XML Android开发 数据格式
【无标题】
【无标题】
10 0
|
算法 C++
无标题。。。
无标题。。。
|
Web App开发 移动开发 前端开发
HTML5关于contenteditable介绍
HTML5已经从一个新的名词变成了我们在项目中经常用到的东西了,今天我们就来分析一番其中contenteditable 。
153 0
|
应用服务中间件 nginx NoSQL
Title comes here
asdasdadawdwadaw
1443 0
无标题
   OOP是从静态角度考虑程序结构,OOP对业务处理过程中的实体、属性和行为进行抽象的封装以获得更加清晰高效化的逻辑划分。研究的是静态领域。 AOP从动态角度考虑程序运行过程,针对业务处理过程中的切面进行提取,所面对的是业务处理过程中的某个步骤或者阶段,研究的是一种动态的过程。
719 0