首页 > 其他分享 >存在继承关系时的输出顺序

存在继承关系时的输出顺序

时间:2023-11-11 16:55:51浏览次数:23  
标签:输出 顺序 继承 子类 代码 执行 System 父类 构造函数

package com.zhang;

public class B extends A{
    //子类的静态代码块
    static{
        System.out.println("子类的静态代码块执行了");
    }

    {
        System.out.println("子类的代码块执行了");
    }

    //子类的构造函数
    public B(){
        super();
        System.out.println("子类的构造函数执行了");
    }
    //子类重载的构造函数
    public B(String name){
        System.out.println("子类重载的构造函数执行了"+name);
    }
}
class A {
    //父类静态代码块
    static {
        System.out.println("父类静态代码块执行了");
    }
    {
        System.out.println("父类的代码块执行了");
    }
    //父类构造函数
    public A(){
        System.out.println("父类构造函数执行了");
    }
}
class Test {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        B b=new B();
        System.out.println("=============");
        B b1=new B("name1");
        System.out.println("=============");
        B b3=new B();
        System.out.println("=============");
        B b2=new B("name2");


    }
}

执行结果
父类静态代码块执行了
子类的静态代码块执行了
父类的代码块执行了
父类构造函数执行了
子类的代码块执行了
子类的构造函数执行了
=============
父类的代码块执行了
父类构造函数执行了
子类的代码块执行了
子类重载的构造函数执行了name1
=============
父类的代码块执行了
父类构造函数执行了
子类的代码块执行了
子类的构造函数执行了
=============
父类的代码块执行了
父类构造函数执行了
子类的代码块执行了
子类重载的构造函数执行了name2
执行顺序:父类静态代码块–>子类静态代码块–>父类代码块–>父类构造–>子类代码块–>子类构造(同样的是先执行静态代码块,并且只打印一次,此后都以父类代码块–>父类构造–>子类代码块–>子类构造顺序执行)

标签:输出,顺序,继承,子类,代码,执行,System,父类,构造函数
From: https://www.cnblogs.com/Zx-3-6-0-/p/17826065.html

相关文章

  • python 执行脚本,并将输出打印到文件
    转载请注明出处:在使用python直接执行脚本时,执行的相关输出会打印到当前的控制台,如果想输出到指定的文件,可以采用以下几种方式:1.在启动时,使用>操作符,该操作符会将输出写入到指定文件,并覆盖原来文件内容如创建一个python脚本,内容如下:print("Thisisatest......
  • 11.10日补交 顺序表的实现
    #include<stdio.h>#include<stdlib.h>#defineM100//线性表的最大容量typedefintElemType;//定义元素类型//顺序线性表的结构体定义typedefstruct{ElemType*elem;//存放元素的动态数组intlength;//线性表中当前元素的个数}Sqlist;//初......
  • 输出瑞年,if语句后面加“;”导致语句失效
    输出1000-2000年之间的瑞年判断条件:(1)能被4整除但不能被100整除;(2)能被400整除#include<stdio.h>intmain(){ inti; for(i=1000;i<=2000;i++) { if(i%4==0&&i%100!=0) { printf("%d",i); } if(i%400==0)//开始这里加了";",结果输出了所有i值,if语句后加分号,只......
  • js常见的继承方式包括原型链继承、借用构造函数继承、组合继承、原型式继承、寄生式继
    js常见的继承方式包括原型链继承、借用构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承,以及ES6新增的class继承,但不包括关联继承https://www.cnblogs.com/Leophen/p/11401734.html构造函数继承是每次继承都会把父类的所有属性方法全部拷贝一份,而对于公用的方法......
  • 如下代码输出的结果是什么:
    如下代码输出的结果是什么console.log(1+"2"+"2");console.log(1++"2"+"2");console.log("A"-"B"+"2");console.log("A"-"B"+2);12232NaN2NaNconsole.log(1+"2"+......
  • 1.两个数的最大公约数;2.输出某个范围的素数
    给定两个数,求其最大公约数#include<stdio.h>intmain(){ intm=24,n=18,r=0; while(m%n)//辗转相除法,改成"while(r=m%n)",下面的"r=m%n"可以省略 { r=m%n; m=n; n=r; } printf("%d\n",n); return0; }输出100-200内的素数#include<stdio.h>......
  • new是以Date为构造函数产生对象的,Date()是直接调用了构造函数。控制台在输出日期对象
    Date()//输出:(字符串)'WedSep21202216:53:16GMT+0800(中国标准时间)'newDate()//输出:WedSep21202216:53:23GMT+0800(中国标准时间)new是以Date为构造函数产生对象的,Date()是直接调用了构造函数。控制台在输出日期对象时调用了tostring......
  • 执行以下程序,输出结果为()
    执行以下程序,输出结果为()varone;vartwo=null;console.log(one==two,one===two);truefalse变量one只声明未赋值,所以其值为undefined,在使用“”对undefined和null进行比较时,不能将null和undefined转换成其他任何值,并且规定undefined==null返回结果为true,而使用“=......
  • logging模块进行格式化输出
    importlogging#创建logger实例logger=logging.getLogger('example')logger.setLevel(logging.INFO)#创建格式化器formatter=logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')#创建控制台处理器console_handler=logging.Stre......
  • 执行以下代码,输出的a值为 undefined
    if(!"a"inwindow){vara=1;}alert(a);官方解析:由于存在变量提升,在if语句执行之前会先使用var声明变量a,并且声明时是在全局作用域下,因此变量a自动成为window对象的属性,故ainwindow的返回结果为true,“!”将条件取反后返回结果为false,所以不会执行if中的赋值语句,a......