猿问

实例初始化器与构造函数有何不同?

实例初始化器与构造函数有何不同?

换句话说,为什么需要实例初始化器?在构造函数上编写实例初始化程序有什么区别或优势?



qq_遁去的一_1
浏览 376回答 3
3回答

尚方宝剑之说

这似乎解释得很好:在以下情况下,实例初始值设定项是实例变量初始化程序的有用替代初始化代码必须捕获异常,或执行无法用实例变量初始化程序表示的花哨计算。当然,您可以在构造函数中编写此类代码。但是在具有多个构造函数的类中,您必须在每个构造函数中重复代码。使用实例初始化程序,您只需编写一次代码,无论使用何种构造函数创建对象,都将执行该代码。实例初始值设定项在匿名内部类中也很有用,它们根本不能声明任何构造函数。

慕的地6264312

就对象生命周期而言,没有区别。两者都在构造时调用,逻辑上初始化块可以被视为构造的一部分。从语义上讲,初始化程序是一个很好的工具,有以下几个原因:初始化程序可以通过将初始化逻辑保持在初始化变量旁边来提高代码可读性:   public class Universe {        public int theAnswer;        {          int SIX = 6;          int NINE = 7;          theAnswer = SIX * NINE;        }        // a bunch of other vars    }VS   public class Universe {        public int theAnswer;        // a bunch of other vars        public Universe() {          int SIX = 6;          int NINE = 7;          theAnswer = SIX * NINE;          // other constructor logic        }    }无论使用哪个构造函数,都会调用初始化程序。初始化程序可以在匿名内部类中使用,而构造函数则不能。
随时随地看视频慕课网APP

相关分类

Java
我要回答