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();
        }
    
    }

    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    【转+补充】在OpenCV for Android 2.4.5中使用SURF(nonfree module)
    Delphi StarOffice Framework Beta 1.0 发布
    Angular ngIf相关问题
    angularjs文档下载
    公众号微信支付开发
    公众号第三方平台开发 教程六 代公众号使用JS SDK说明
    公众号第三方平台开发 教程五 代公众号处理消息和事件
    公众号第三方平台开发 教程四 代公众号发起网页授权说明
    公众号第三方平台开发 教程三 微信公众号授权第三方平台
    公众号第三方平台开发 教程二 component_verify_ticket和accessToken的获取
  • 原文地址:https://www.cnblogs.com/CCTVCHCH/p/14599001.html
Copyright © 2011-2022 走看看