• java 对象初始化和代码块初始化顺序


    class A
    {
        public A(){
            System.out.println("测试!!!!!!!!!!!");
        }
    }
    
    class Demo19  extends A
    {
    
        {
            x=7;//代码块初始化
            System.out.println("hello world!测试代码块的执行顺序!AAAAAAAAAAA");
        }
        public int x=1;//这里不会初始化变量值  只会声明变量
        public int y=2;//这里不会初始化变量值  只会声明变量
        
        public Demo19(){
        //super();
        //相当于 x=7
        //然后x=1;
        //y=2;
        //y=13;
        }
        public Demo19(int d_x,int d_y)
        {    //super();    
            //x=7;
            //x=1;
            //y=2;
            //y=13;
            x=d_x;
            y=d_y;
            //super();//假如显示的调用  那么是不能放在这里初始化的
        }
        //代码块的执行顺序是按照代码块的顺序执行的
        //代码块的执行时间:在对象初始化的时候执行!!!!!!!!!!!!!
        {
            y=13;//代码块初始化
            System.out.println("hello world!测试代码块执行的顺序!BBBBBBBBBBBB");
        }
        
        //构造函数的代码块
        
        public static void main(String[] args)
        {    
            //这里初始化的时候就跟上面的初始化差不多
            Demo19 demo=new Demo19();
            System.out.println("测试代码块:x="+demo.x+"  ,y="+demo.y);
            
            //这里的初始化相当于上面的那个操作
            Demo19 demoOne=new Demo19(12,45);
            System.out.println("测试代码块:x="+demoOne.x+"  ,y="+demoOne.y);
            
            System.out.println("其他的顺序是不变的!这个是比较重要的");
            
            System.out.println("代码块的使用!");
            
        }
    }

    抽象类的初始化:

    abstract class A
    {
       String name;
       String id;
       
       public abstract void test();
    }
    
    abstract class B extends A
    {
        //子类也可以是抽象类,不实现父类的方法
    }
    
    class C extends A
    {
        public  void test(){
            System.out.println("子类假如不是抽象类  那么必须实现父类的方法");
        }
    }
    abstract class D1
    {
        /* 抽象类中也是有构造函数的,只是这个只能子类初始化 */
        
        D1(){
            System.out.println("测试抽象类的构造函数!");
        }    
        static String name="什么是你";
    }
    class D extends D1
    {
        D(){
            System.out.println("子类调用父类的构造函数");
        }
        public void test(){
            System.out.println(this.name);
            
            System.out.println("假如抽象类中没有抽象方法,那么继承也是没有问题的");
        }
    }
    class Demo5
    {
        public static void main(String[] args)
        {
            D d =new D();
            d.test();
            System.out.println("抽象类!!!!!");
            System.out.println("类不支持多重继承!!!!!!!!!!!!!!!!");
        }
        
    }
  • 相关阅读:
    Spark权威指南(中文版)----第5章 结构化API基本操作
    Spark权威指南(中文版)----第2章 Spark简介
    Spark权威指南(中文版)----第4章 结构化API概述
    Spark权威指南(中文版)----第1章Apache Spark是什么
    Java读写锁的实现原理
    【进阶之路】动态代理与字节码生成
    如何写好技术文档——来自Google十多年的文档经验
    谈谈 C++ STL 中的迭代器
    面试官疯狂问我联表查询怎么办? 愣着干嘛?进来白嫖啊!
    面试问题记录 三 (JavaWeb、JavaEE)
  • 原文地址:https://www.cnblogs.com/wucaifang/p/3312889.html
Copyright © 2020-2023  润新知