QQ个性网:专注于分享免费的QQ个性内容

关于我们| 网站公告| 广告服务| 联系我们| 网站地图

搜索
编程 JavaScript Java C++ Python SQL C Io ML COBOL Racket APL OCaml ABC Sed Bash Visual Basic Modula-2 Logo Delphi IDL Groovy Julia REXX Chapel X10 Forth Eiffel C# Go Rust PHP Swift Kotlin R Dart Perl Ruby TypeScript MATLAB Shell Lua Scala Objective-C F# Haskell Elixir Lisp Prolog Ada Fortran Erlang Scheme Smalltalk ABAP D ActionScript Tcl AWK IDL J PostScript IDL PL/SQL PowerShell

Java-子类实例化过程是否同时存在一个父类对象 这个你知道?

日期:2025/04/06 15:53来源:未知 人气:53

导读:23:411.1.1.继承中类加载的过程问题:以下代码执行结果是什么?classF{static{System.out.println("父类的静态代码块");}}classZextendsF{static{System.out.println("子类的静态代码块");}}public classTest {public static voidmain(String[]args......

23:41

1.1.1.继承中类加载的过程

问题:以下代码执行结果是什么?

classF{

static{

System.out.println("父类的静态代码块");

}

}

classZextendsF{

static{

System.out.println("子类的静态代码块");

}

}

public classTest {

public static voidmain(String[]args) {

newZ();

}

}

结论:类加载时,会先加载父类,再加载子类;

注意:一个类只会加载一次;所以如果一个子类的父类已经加载过了,那么再次加载那个父类的其他子类时,不会再加载父类;

1.1.2.子类实例化的过程

问题:以下代码执行结果是什么?

classF{

int a= 10;

public voidshow(){

System.out.println("a = "+a);

}

publicF(){

System.out.println("父类构造函数");

show();

}

}

classZextendsF{

int b= 20;

public voidshow(){

System.out.println("a = "+a+" ; b = "+b);

}

publicZ(){

System.out.println("子类构造函数");

show();

}

}

public classTest {

public static voidmain(String[] args) {

new Z();

}

}

结论:

1、子类实例化,只会创建一个对象(就是子类对象);

2、子类实例化,会在子类的对象空间中为父类的非静态成员也分配空间;

3、子类构造函数执行时,会通过隐式操作先调用父类构造函数执行;

4、构造函数执行时,哪个类的构造函数,负责为那个类的非静态成员变量显示赋值;

关于我们|网站公告|广告服务|联系我们| 网站地图

Copyright © 2002-2023 某某QQ个性网 版权所有 | 备案号:粤ICP备xxxxxxxx号

声明: 本站非腾讯QQ官方网站 所有软件和文章来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告