动手动脑

以下代码为何无法通过编译?哪出错了?

public class Test

{

public static void main(String[] args)

{

Foo obj1=new Foo();

}

}

class Foo{

int value;

public Foo(int initValue)

{

value=initValue;

}

}

如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。

Foo obj1=new Foo()在此处调用的时候没有参数,应增加他的参数。

静态初始化块执行顺序

class Root

{

       static{

              System.out.println("Root的静态初始化块");

       }

       {

              System.out.println("Root的普通初始化块");

       }

       public Root()

       {

              System.out.println("Root的无参数的构造器");

       }

}

class Mid extends Root

{

       static{

              System.out.println("Mid的静态初始化块");

       }

       {

              System.out.println("Mid的普通初始化块");

       }

       public Mid()

       {

              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("Java初始化顺序演示");

              System.out.println("执行Leaf的构造器");

       }

}

 

public class TestStaticInitializeBlock

{

       public static void main(String[] args)

       {

              new Leaf();

       }

}

执行顺序(先->后):静态初始化块->初始化块(构造代码块)->构造函数

  1. 静态初始化块:在第一次加载类时执行,与对象的创建无关。
  2. 构造代码块:在调用构造方法时执行。
  3. 构造函数:在调用构造函数时执行。

posted on   FF冯静妃  阅读(82)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示