2015-03-25 71 views
-1

我想创建另一个类,但基类构造函数的基类的对象被定义为私人如何创建类,它的构造函数的对象被定义为私人

这里是我的代码

public class Main 
{ 
    public static void main(String ... args) 
    { 
    //Base objBase = new Base(); 
    //objBase.show(); 
    } 
} 


class Base 
{ 
    private Base() 
    { 

    } 

    public void show() 
    { 
    System.out.println("Base Class Show() Method"); 
    } 
} 
+1

你不能。这就是为什么你让构造函数是私有的。 – emlai 2015-03-25 06:21:09

+0

你可以尝试反思。但除非你正在回答面试问题,否则最好的办法就是修改这段代码。 – 2015-03-25 06:21:19

+0

你可以使用反射,但是这会破坏私密性的目的。 – Bathsheba 2015-03-25 06:21:31

回答

4

内部Base代码仍然是允许调用构造函数,这意味着它可能在一个静态方法来创建对象:

class Base 
{ 
    private Base() 
    { 

    } 

    public void show() 
    { 
    System.out.println("Base Class Show() Method"); 
    } 

    public static Base createBase() { 
     return new Base(); 
    } 
} 

,然后调用其实现方法具d创建一个对象:

Base objBase = Base.createBase(); 
objBase.show(); 
1

如果您有私有构造函数,则不能创建类的对象。对象可以构建,但只能在内部构建。事情就是这样。

有一些常见的情况下,私有构造可能是有用的:

  1. 单身
  2. 只包含静态方法
  3. 类类只含常量
  4. 类型安全枚举

希望这有助于。

+0

另外,有些人认为工厂方法比构造函数更具可读性。如果一个类有多个构造函数,那么可以给工厂方法提供不同的描述性名称,而且你不能使用构造函数来实现这一点。 – ajb 2015-03-25 06:36:42

相关问题