04-JAVA中的类和对象

1.

 

 

Foo对构造函数进行了重载,那么默认的构造函数就不会被使用,在主类中,定义对象的时候,引用构造函数,却没有参数,自然无法通过编译。

2.

 

 

当设定字段初始值在初始化块前面的时候,

 

很明显使用了前者;

当初始化块在设定字段初始值前面的时候,

 

同样使用了前者;

得出的规律是:它们俩,谁在前面,就用谁;

但是,上面两张图都有一点相同的地方,就是当引用构造函数的时候,那么它的优先级是始终大于设定字段初始值和初始化块的。

3.

 

 

运行结果:

 

 

由运行结果可以很明显的看出,当主函数中new Leaf( ) 的时候,从最顶层的类开始,依次调用静态初始化块。

4.

 

 

解决方法:由于静态方法只能访问静态数据,所以,我就想到可以在方法里先定义一个静态对象,这样这个静态方法就可以访问类的实例成员了。

 

 

经过验证,发现这个方法确实可行。

5.

 

public class LianXi {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
   A1 obj1=new A1();
   A1 obj2=new A1();
   A1 obj3=null;
   System.out.println("已定义了"+A1.num+"个对象。");
    }

}
class A1{
    static int num=0;
     A1(){
        jiShu();
    }
     static void jiShu(){
         num++;
     }
     
}

程序运行结果:

 

转载于:https://www.cnblogs.com/haojun/p/5979462.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值