栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

静态代码块调用问题:

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

静态代码块调用问题:

静态代码块调用问题:

提示:LintCode 入门级——2875 · 程序运行结果
例如:给定一个数字 num 表示 new TestB() 的次数,请您计算执行 num 次 new TestB() 后 TestA.num 的值,并在 Solution 类的 printNum 方法中输出。


描述: 详细结构内容 截自LintCode

Main()

TestA.java

TestB.java

Solution实现
要求:并不会去真正的调用 new TestB() 方法,因此不要使用 TestA.num 的方式获取 num 的值。

public class Solution {
    public void printNum(int num) {
		// write your code here
        TestB testB =new TestB();
        for(int i=0;i 

我的初步分析:

1:首先是涉及到静态代码块调用顺序问题:
以该题目为例,当num=1时,首先会执行 new TestB,由于TestB继承TestA执行顺序:首先执行TestA父类静态代码块,在执行TestB父类静态代码块,在执行TestA匿名代码块和构造方法,然后执行TestB中的匿名代码块和构造方法,注意,static方法只执行一次,所以等到下一次创建new TestB()时,父类A中与子类B中的static代码块不再执行,因此当num=2结果为10,num=3结果为14。

2:然后是作用域的细节问题:
因为要求不要使用 TestA.num 的方式获取 num 的值,所以可以根据继承关系通过本题目约束中的子类对象调用父类成员。那么就需要在循环外创建对象(循环里面创建对象作用域只是循环内),但是在循环外定义也算为执行一次,因此再循环条件改为num-1。


优化方案:

Tips:如果有其他方法,请留言!期待改进,感谢

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/318444.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号