zoukankan      html  css  js  c++  java
  • Java易错题(1)

    检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。

    public class HelloB extends HelloA 
    {
     public HelloB()
     {
     }
     {
         System.out.println("I’m B class");
     }
     static
     {
         System.out.println("static B");
     }
     public static void main(String[] args)
     {
         new HelloB();
     }
    }
    class HelloA
    {
     public HelloA()
     {
     }
     {
         System.out.println("I’m A class");
     }
     static
     {
         System.out.println("static A");
     }
    }
    A.static A
      I’m A class
      static B
      I’m B class
    B.I’m A class
       I’m B class
       static A
       static B
    C.static A
       static B
       I’m A class
       I’m B class
    D.I’m A class
       static A
       I’m B class
       static B

    答案:C.

    解析:其中涉及:静态初始化代码块、构造代码块、构造方法
    当涉及到继承时,按照如下顺序执行:
    1、执行父类的静态代码块 
    static {
            System.out.println("static A");
        }
    输出:static A
    2、执行子类的静态代码块
    static {
            System.out.println("static B");
        }
    输出:static B
    3、执行父类的构造代码块
    {
            System.out.println("I’m A class");
        }
    输出:I'm A class
    4、执行父类的构造函数
    public HelloA() {
        }
    输出:无
    5、执行子类的构造代码块
    {
            System.out.println("I’m B class");
        }
    输出:I'm B class
    6、执行子类的构造函数
    public HelloB() {
        }
    输出:无

    那么,最后的输出为:
    static A
    static B
    I'm A class
    I'm B class
    正确答案:C




  • 相关阅读:
    网站性能之meta标签
    布局中的css要素
    MVC中配置OutputCache的VaryByParam参数无效的问题
    C# 4.0 类与继承
    想要充值手机话费吗???亿矿网找错误送话费啦
    .Net Core 依赖注入
    Hadoop实战内容摘记
    Thead,TheadPool,Task,async,await 的前世今生
    VS Code 中 使用 Git版本控制工具
    dotnet 命令大全-理论版
  • 原文地址:https://www.cnblogs.com/yzh-blog/p/8907839.html
Copyright © 2011-2022 走看看