java作业3

一.构造方法

1.源代码

public class Test{

         public static void main(String[] args){

                  Foo obj1=new Foo();

         }

}

class Foo{

         int value;

         public Foo(int initValue){

                  value=initValue;

         }

}

2.程序截图

 

3.结果分析

若构造方法已提供,则系统不再提供默认构造方法。

二.JAVA字段初始化

1.源代码

public class InitializeBlockDemo {

         public static void main(String[] args) {

                 

                  InitializeBlockClass obj=new InitializeBlockClass();

                  System.out.println(obj.field);

                 

                  obj=new InitializeBlockClass(300);

                  System.out.println(obj.field);

         }

 

}

 

class InitializeBlockClass{

         {

             field=200;

         }

         public int field=100;

         public InitializeBlockClass(int value){

                  this.field=value;

         }

         public InitializeBlockClass(){

                 

         }

}

2.程序截图

 

3.结果分析

关于java字段初始化问题,无继承情况:初始化块第一个执行,字段初始值设置代码第二个执行,构造函数第三个执行。

三.有继承情况的初始化问题

1.源代码

class B{

 public B() {

  System.out.println("父类  构造函数第四个执行");

 }

 {

  System.out.println("父类  动态代码块第三个执行");

 }

 static {

  System.out.println("父类   静态块第一个执行");

 }

}

public class A extends B{

 public A() {

  System.out.println("子类   构造函数第六个执行");

 }

 {

  System.out.println("子类   动态代码块第五个执行");

 }

 static {

  System.out.println("子类   静态块第二个执行");

 }

 public static void main(String[] args) {

  new A();

 }

}

2.程序截图

 

四.

 

 

对象的初始化顺序:首先执行父类静态的内容,父类静态内容执行完毕后,执行子类内容。子类执行完后,再去看父类有没有非静态代码块,如果有就执行。父类非静态代码块--->父类构造方法--->子类非静态代码块--->子类构造方法。

五.课后作业  编写一个类,在任何时候都能查询创建对象的个数

1.源代码

public class Test {                private int id;                private String name;                private static long count;                private final static ThreadLocal tl=new ThreadLocal();                public Test() {                                super();                                count++;                                tl.set(count);                }                public long getCount(){                                return (Long)tl.get();                }                public static void main(String[] args) {                                for (int i = 0; i < 5; i++) {                                               Test t=new Test();                                               System.out.println(t.getCount());                                }                }                 }

2.程序截图

 

 

 

转载于:https://www.cnblogs.com/Jasoon/p/4888481.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值