• java课后作业3


    1、动手动脑

     

     由于类中定义了需要参数的构造方法,导致系统不再提供默认的构造方法。

    2、java字段初始化

       

    运行结果

    100

    300

    java字段在初始化时先按照对应的构造方法执行。若构造方法中没有对变量进行初始化,对于变量定义时初始化和初始化块,排在后面的会覆盖在前面的。

    3、动手动脑

    静态初始化块的执行顺序

    源码

    public class Root1
    {
       public static void main(String[] args)
       {
          new Leaf();
      
       }
    }
    class Root
    {
       static{
          System.out.println("Root的静态初始化块");
       }
       {
          System.out.println("Root的普通初始化块");
       }
       public Root()
       {
          System.out.println("Root的无参数的构造器");
       }
    }
    class Mid extends Root
    {
       static{
        System.out.println("Mid的静态初始化块");
       }
       {
        System.out.println("Mid的普通初始化块");
       }
       public Mid()
       {
          System.out.println("Mid的无参数的构造器");
       }
       public Mid(String msg)
       {
          //通过this调用同一类中重载的构造器
          this();
          System.out.println("Mid的带参数构造器,其参数值:" + msg);
       }
    }
    class Leaf extends Mid
    {
       static{
        System.out.println("Leaf的静态初始化块");
       }
       {
          System.out.println("Leaf的普通初始化块");
       } 
       public Leaf()
       {
          //通过super调用父类中有一个字符串参数的构造器
          super("Java初始化顺序演示");
          System.out.println("执行Leaf的构造器");
       }
    }
     
     运行结果
    Root的静态初始化块
    Mid的静态初始化块
    Leaf的静态初始化块
    Root的普通初始化块
    Root的无参数的构造器
    Mid的普通初始化块
    Mid的无参数的构造器
    Mid的带参数构造器,其参数值:Java初始化顺序演示
    Leaf的普通初始化块
    执行Leaf的构造器
     
     

    规律

    (1)静态初始化块只执行一次(2)创建子类型的对象时,也会导致父类型的静态初始化块的执行

    4、

     

     直接在静态方法中初始化含有实例对象的类会报错


    public class statics {
       int x=1;
       static int y=2;
       public static void method()
       {
          int a=new statics();
          System.out.println();
       }
    }

    采用如下方法进行调用


    public class statics {
       int x=1;
       static int y=2;
       public static void main(String[] args)
       {
          System.out.println(new statics().x);
          System.out.println();
       }
    }

  • 相关阅读:
    WUSTOJ 1232: 矩阵乘法(C)
    JDBC(Java项目使用Oracle数据库)
    1187: 零起点学算法94——今年暑假不AC(Java)
    1223: 输出汉诺塔问题的盘子移动步骤(Java)
    软件设计师真题及解析
    Eclipse常用快捷键
    1205: 求一元二次方程的实数根(C)
    1204: 移位运算(C)
    1192: 零起点学算法99——The sum problem(C)
    1186: 零起点学算法93——改革春风吹满地(C)
  • 原文地址:https://www.cnblogs.com/songxinai/p/11684169.html
Copyright © 2020-2023  润新知