构造函数链接的目的? - c#

阅读完此Constructor chaining question之后,我很好奇,为什么要构造函数链接?

有人可以说明一下可能有用的场景类型吗?

这是一种好的编程习惯吗?

参考方案

这绝对是个好习惯,主要有两个原因:

避免重复代码

class Foo
{
    public Foo(String myString, Int32 myInt){
        //Some Initialization stuff here
    }

    //Default value for myInt
    public Foo(String myString) : this(myString, 42){}

    //Default value for both
    public Foo() : this("The Answer", 42){}
}

强制执行良好的封装

public abstract class Foo
{
    protected Foo(String someString)
    {
        //Important Stuff Here
    }
}

public class Bar : Foo
{
    public Bar(String someString, Int32 myInt): base(someString)
    {
        //Let's the base class do it's thing
        // while extending behavior
    }
}

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java:可以使用大括号使代码更具可读性吗? - java

我试图简化一些复杂的代码块,发现用大括号分隔逻辑块很有用:{ // step 1 { // step 2 { // step 3 } } } 这样做可以作为生产代码吗?将这些函数提取到单独的函数中不认为是一种选择,因为它需要将许多参数传递给它们并开发合理的函数名称-不值得。 参考方案 从技术上讲-是的,它不会破坏任何内容(除了作用域变量之外,虽然变量会在编译…

JAVA 8具有任何匹配属性的对象的过滤器列表 - java

我的要求是通过匹配任何属性的字符串来过滤对象列表。例如,假设Contact类具有三个属性:街道,城市,电话。我知道java流过滤器是如何工作的,在这里我必须将输入字符串与每个属性进行比较,如下所示:contactList.stream().filter(contact -> contact.getStreet().equals("dubai&…

Java-其他文件中的嵌套类 - java

我有类似的东西:class Outer { // a lot of code... class Inner { // a lot of code... } } 这正是我想要的技术方式(我希望Inner成为嵌套的非静态类)。该文件很长,在这个项目中我经常使用这种模式。为了提高可读性,我想将Outer类和Inner类放在各自的文件中-但我应该将它们分别保留为“I…

我真的需要在Java中定义默认构造函数吗? - java

当未定义构造函数时,它可以正常工作,但是如果我定义了一个参数化的构造函数而不是默认的一个,并且在创建对象时不传递任何值,则会出错。我认为构造函数是预定义的。如果定义了参数化构造函数,为什么需要定义默认构造函数?默认构造函数不是预定义的吗? 参考方案 仅当您自己未定义任何构造函数时,才会自动创建默认(无参数)构造函数。如果需要两个构造函数,一个带有参数,另一个…