• 【Java面试题】16 静态代码块,main方法,构造代码块,构造方法


    public class HelloB extends HelloA{
        public HelloB()
        {
            System.out.println("HelloB");
        }
        
        {
            System.out.println("I am B class");
            }
        static{
            System.out.println("static B");
        }
        public static void main(String[] args){
            System.out.println("HelloB的主方法");
            new HelloA();
            new HelloA();
            new HelloB();
            new HelloB();
        }
    }
    class HelloA{
        public HelloA()
        {
            System.out.println("HelloA");
        }
        
        {
            System.out.println("I am A class");
            }
        static{
            System.out.println("static A");
        }
    }

    运行结果:

    static A
    static B
    HelloB的主方法
    I am A class
    HelloA
    I am A class
    HelloA
    I am A class
    HelloA
    I am B class
    HelloB
    I am A class
    HelloA
    I am B class
    HelloB

    相关例子:http://www.cnblogs.com/wangzhongqiu/p/6288452.html

    public class testdaimakuia {
        public static void main(String[] args) {
            B b = new B();
        }
    }
    
    class A {
        {
            System.out.println("A的构造块");
        }
    
        A() {
            System.out.print("A");
        }
    }
    
    class B {
        {
            System.out.println("B的构造块");
        }
    
        B() {
            System.out.print("B");
        }
    
        A a = new A();
    }

     执行结果:

    B的构造块
    A的构造块
    AB

     静态代码块>mian方法>构造代码块==成员变量(按照出现先后顺序执行)>构造方法
     
    public class testdaimakuia {
        public static void main(String[] args) {
            B b = new B();
        }
    }
    
    class A {
        static {
            System.out.println("A的静态代码块");
        }
        {
            System.out.println("A的构造块");
        }
    
        A() {
            System.out.print("A");
        }
    }
    
    class B {
        static {
            System.out.println("B的静态代码块");
        }
        {
            System.out.println("B的构造块");
        }
    
        B() {
            System.out.print("B");
        }
    
        static A a = new A();
     
    }

    执行结果:

    B的静态代码块
    A的静态代码块
    A的构造块
    AB的构造块
    B

     静态成员变量==静态代码块(按照出现先后顺序执行)>mian方法>构造代码块==成员变量(按照出现先后顺序执行)>构造方法

  • 相关阅读:
    C++探究transform算法
    C++探究foreach算法
    C++ MFC棋牌类小游戏day6
    C++ MFC棋牌类小游戏day5
    C++ MFC棋牌类小游戏day4
    C++ MFC棋牌类小游戏day3
    MFC 字体
    C++ MFC棋牌类小游戏day2
    第三章 使用属性升级MyBank
    第二章 C#语法快速热身
  • 原文地址:https://www.cnblogs.com/guweiwei/p/6603583.html
Copyright © 2020-2023  润新知