super && this 关键字 && try catch

来源:互联网 发布:json格式用什么打开 编辑:程序博客网 时间:2024/06/16 18:21

1 在使用super 和 this 关键字时,以下描述中正确的是()

  • A 在子类的构造方法中,使用super()显示调用父类的构造方法,super()必须写在子类的构造方法的第一行,否则编译不通过
  • B super() 和 this() 不一定要放在要放在狗造方法的第一行
  • C this() 和 super() 可以同时出现在一个构造函数中
  • D this() 和 super() 可以在static 环境中使用,包括static 和 static 语句块;

    注解:

      1 调用super()必须写在子类的构造方法的第一行,否则编译不通过,每个子类狗造方法的第一行条语句,都隐含的调用了父类的super(),如果,父类中有其他的参数的构造函数,而没有无参的构造函数,此时,就会出现错误,编译器会报错。***** 2 super()和 this()类似,区别是,super从子类中调用父类的构造方法,this()是在同一个类中,调用本类的其他构造方法。如:一个类中有一个无参的构造方法和一个有参的构造方法,此时无参的构造方法,可以调用 有参的构造犯法 ,当然,有参的构造方法也可以调用无参的构造方法,此时可以在函数体的第一行直接调用this();3 super()和this()调用均需放在构造方法的第一行。4 this()和super() 不能同时出现在一个构造函数中,因为如果同时出现在一个构造函数中,此时的this 会必然调用其父类的构造函数但是,此时就会有两个super()函数被调用,出现相同的语句,编译器不会通过。5 this() 和 super()都指的是对象(构造对象),所以,均不可以在static 环境中使用,包括:static变量 static 方法 static 语句块.static修饰的方法是属于类*****,该方法的调用者可能是类,而不是对象。this 和 super 都指向的是对象。

    2 下面的代码运行的结果是(C)

    public class Test2 {

    public int add(int a ,int b)
    {
    try{
    return a + b;
    }
    catch(Exception e){
    System.out.println(“catch 语句块”);
    }
    finally{
    System.out.println(“finally 语句块”);
    }
    return 0;
    }

    public static void main(String[] args) {Test2 test2 = new Test2();System.out.println("和是" + test2.add(9,34));

    }
    }

  • A catch 语句和是:43
  • B 编译异常
  • C finally 语句块 和是:43
  • D 和是:43 finally 语句块

  • 注解:
    1 任何执行try 或者 catch 中的return 语句之前,都会先执行finally 语句,前提是finally语句中存在return 语句.如果finally 语句中有return ,那么就直接return ,所以finally 语句中的return 一定会被执行,此处,finally的语句块中没有return ,编译器把finally中的的return 实现默认为一个警
    2 在来说一说sysout
    sysout 会先处理参数,得到一个完整的字符串,则在处理过程中,先输出“finally语句块”,然后再去return,最后得到一个三完整的字符串,再进行控制台的输出。
0 0