2013-08-16 114 views
2

我知道可以通过使用“this”从另一个构造函数调用一个构造函数。从另一个构造函数调用构造函数的实际场景

但我想知道的是,为什么我们这样做(即调用从另一个构造函数构造函数)

任何人都可以涉及的地方,这可能是真正有用的一个简单的例子?

+0

我认为你正在寻找描述它的术语被称为[构造函数重载](http://stackoverflow.com/questions/1182153/constructor-overloading-in-java-best-practice) –

回答

10

ArrayList是一个很好的例子。默认构造函数调用具有底层数组初始容量的构造函数。这看起来是这样的:

public ArrayList() 
{ 
    this(10); 
} 

public ArrayList(int capacity) 
{ 
    objects = new Object[capacity]; 
} 
+0

同样适用于'new HashMap()'和其他可以默认指定方式创建的对象 – dantuch

2

如果我们不想重复代码:

class Foo{ 

    int requiredParam; 
    String name; 
    double optionalPrice; 
    Object extraObject; 
    public Foo(int rp, String name){ 
     this.requiredParam=rp; 
     this.name=name 
    } 
    public Foo(int rp, String name, double op, Object e){ 
     this(rp, name); 
     this.optionalPrice=op; 
     this.extraObject=e; 
    } 
1

怎么样一个简单的类是这样的:

class Person { 

     String name; 

     Person(String firstName, String lastName) { 
      this(firstName + lastName); 
     } 

     Person(String fullName) { 
      name = fullName; 
     } 
    } 

不同的构造给你的自由创建不同风格的相似对象。

相关问题