最新回答 / Shallway12138
通过hello2的创建与hello1创建的输出对比,从而说明静态初始化代码块只执行一次啊,而且是在类加载的时候执行,与类对象的创建过程无关。
2019-10-21
已采纳回答 / 山野小花曳风雨
时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。题目中要求通过静态初始化块初始化age,所以age得定义为静态变量。静态变量属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。所以当某个变量假若被频繁使用就可以考虑使用静态变量。但是静态变量的生命周期知道该类被销毁的时候才会被回收资源,所以不要定义太多,会影响内存。文中原话是:然而在某些时候,我们更希望该类所有的对象共享同一个成员。你理解有误。
2019-10-21
最赞回答 / 慕先生7064480
前面是把Dog对象转换成Animal对象,自动类型转换。Dog dog2 = animal是把Animal对象转换成Dog对象,强制类型转换。
2019-10-19
final关键字:使用final关键字做表示有“最终的”含义
final可以修饰类、方法、属性和变量
final修饰类,则该类不允许被继承
final修饰方法,则该方法不允许被覆盖(重写)
final修饰属性:则该类的属性不会进行隐式的初始化(初始化属性时赋值)或在构造方法中赋值(但只能选其一)
final修饰变量,则该变量的值只能赋一次值,即变为常量;如果使用final修饰变量,且没有给该变量赋值,系统不会自动给该变量赋默认值0,会报错
final可以修饰类、方法、属性和变量
final修饰类,则该类不允许被继承
final修饰方法,则该方法不允许被覆盖(重写)
final修饰属性:则该类的属性不会进行隐式的初始化(初始化属性时赋值)或在构造方法中赋值(但只能选其一)
final修饰变量,则该变量的值只能赋一次值,即变为常量;如果使用final修饰变量,且没有给该变量赋值,系统不会自动给该变量赋默认值0,会报错
2019-10-17
如果把一个静态方法比作一个将军,那么静态对象就是将军的私兵,可以不通过虎符(类的对象)来调动,而非静态对象就是其他的军队,将军可以调用其他军队,但是必须通过虎符(类的对象)来调动。
2019-10-14