zoukankan      html  css  js  c++  java
  • 类的成员之四:代码块(或初始化块)

    /*

    * 类的成员之四:代码块(或初始化块)
    *
    * 1. 代码块的作用:用来初始化类、对象
    * 2. 代码块如果有修饰的话,只能使用static.
    * 3. 分类:静态代码块 vs 非静态代码块
    *
    * 4. 静态代码块
    * >内部可以有输出语句
    * >随着类的加载而执行,而且只执行一次
    * >作用:初始化类的信息
    * >如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行
    * >静态代码块的执行要优先于非静态代码块的执行
    * >静态代码块内只能调用静态的属性、静态的方法,不能调用非静态的结构
    *
    * 5. 非静态代码块
    * >内部可以有输出语句
    * >随着对象的创建而执行
    * >每创建一个对象,就执行一次非静态代码块
    * >作用:可以在创建对象时,对对象的属性等进行初始化
    * >如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行
    * >非静态代码块内可以调用静态的属性、静态的方法,或非静态的属性、非静态的方法
    *
    */

    package com.ch.java3;
    //总结:由父及子,静态先行,代码块再构造器
    class Root{
        static{
            System.out.println("Root的静态初始化块");
        }
        {
            System.out.println("Root的普通初始化块");
        }
        public Root(){
            super();
            System.out.println("Root的无参数的构造器");
        }
    }
    class Mid extends Root{
        static{
            System.out.println("Mid的静态初始化块");
        }
        {
            System.out.println("Mid的普通初始化块");
        }
        public Mid(){
            super();
            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("尚硅谷");
            System.out.println("Leaf的构造器");
        }
    }
    public class LeafTest{
        public static void main(String[] args){
            new Leaf(); 
            System.out.println();
            new Leaf();
        }
    }

    package com.ch.java3;
    
    class Father {
        static {
            System.out.println("11111111111");
        }
        {
            System.out.println("22222222222");
        }
    
        public Father() {
            System.out.println("33333333333");
    
        }
    
    }
    
    public class Son extends Father {
        static {
            System.out.println("44444444444");
        }
        {
            System.out.println("55555555555");
        }
        public Son() {
            System.out.println("66666666666");
        }
    
    
        public static void main(String[] args) { // 由父及子 静态先行
            System.out.println("77777777777");
            System.out.println("************************");
            new Son();
            System.out.println("************************");
            new Son();
            System.out.println("************************");
            new Father();
        }
    
    }

    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    Tomcat Jboss,jetty,Apache WebLogic区别与比较(阿里面试)
    zookeeper 负载均衡 核心机制-实现原理 包含ZAB协议(滴滴,阿里面试)
    六大Web负载均衡原理与实现
    LVS(Linus Virtual Server):三种IP负载均衡方式比较+另三种Web负载均衡方式
    JTable动态刷新数据
    java当中的定时器的4种使用方式
    java如何判断编码是否是utf8编码
    Java多线程-线程的同步与锁
    java中需要用equals来判断两个字符串值是否相等
    libcurl使用easy模式阻塞卡死等问题的完美解决---超时设置
  • 原文地址:https://www.cnblogs.com/CCTVCHCH/p/14599001.html
Copyright © 2011-2022 走看看