Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用私有构造函数_Java_Oop - Fatal编程技术网

Java 使用私有构造函数

Java 使用私有构造函数,java,oop,Java,Oop,我是一个Android的begginer程序员,我在互联网上找到了一些代码,但我无法理解这个类不是要实例化的意思?!还有它的用途。如果有人能在这里帮忙,我会很高兴的 public class Settings { //some code private Settings() {} // Class not meant to be instantiated //some code } 这种内在结构 private Settings() {} 是设置实例的构造函数。由于它

我是一个Android的begginer程序员,我在互联网上找到了一些代码,但我无法理解这个类不是要实例化的意思?!还有它的用途。如果有人能在这里帮忙,我会很高兴的

public class Settings
{
    //some code
    private Settings() {} // Class not meant to be instantiated
    //some code
}
这种内在结构

private Settings() {}
是设置实例的构造函数。由于它是私有的,没有人可以在类本身之外访问它,因此不能创建任何实例。

这个内部构造

private Settings() {}

是设置实例的构造函数。由于它是私有的,没有人可以在类本身之外访问它,因此不能创建任何实例。

构造函数是私有的,因此它不意味着被类之外的任何东西调用

构造函数是私有的,因此它不意味着被类之外的任何东西调用

它不是嵌套类,这是一个构造函数。私有构造函数意味着您不能从外部构造此类的实例,如下所示:

Settings s = new Settings(); //Compilation error! :(
现在,如果一个类不能被实例化,它有什么用呢?最可能的原因是该类将从静态方法返回自身的实例,可能是作为单例。这些设置通常是程序的全局设置,因此单例模式非常适合这里。所以会有一个静态方法,类似这样

static private TheOnlySettings = null;

static public getSettings()
{
    if(TheOnlySettings == null)
        TheOnlySettings = new Settings(); //Legal, since it's inside the Settings class
    return TheOnlySettings;
}

看看是否确实如此。

它不是嵌套类,而是构造函数。私有构造函数意味着您不能从外部构造此类的实例,如下所示:

Settings s = new Settings(); //Compilation error! :(
现在,如果一个类不能被实例化,它有什么用呢?最可能的原因是该类将从静态方法返回自身的实例,可能是作为单例。这些设置通常是程序的全局设置,因此单例模式非常适合这里。所以会有一个静态方法,类似这样

static private TheOnlySettings = null;

static public getSettings()
{
    if(TheOnlySettings == null)
        TheOnlySettings = new Settings(); //Legal, since it's inside the Settings class
    return TheOnlySettings;
}

看看是否确实如此。

构造函数是私有的,因此只有类本身可以创建实例。这样做有几个原因。从我头顶上掉下来的一对

该类是一个只包含静态方法的实用程序类,因此实例化它毫无意义。由于这个类是注释类,所以我想这是最可能的原因

类本身控制自己的生命周期,并提供创建实例的方法。例如,如果类是一个懒惰的单例,它可能会提供一个方法,在第一次调用时创建一个实例,并在后续调用时返回该实例


构造函数是私有的,因此只有类本身可以创建实例。这样做有几个原因。从我头顶上掉下来的一对

该类是一个只包含静态方法的实用程序类,因此实例化它毫无意义。由于这个类是注释类,所以我想这是最可能的原因

类本身控制自己的生命周期,并提供创建实例的方法。例如,如果类是一个懒惰的单例,它可能会提供一个方法,在第一次调用时创建一个实例,并在后续调用时返回该实例


它是一个私有构造函数。这意味着外部类不能使用默认构造函数创建新实例

更多信息 Java中的所有对象都有一个默认构造函数:

这就是你如何上这门课的方法:

public class MyObject{}
并且仍然能够拨打:

MyObject mObj = new MyObject();
私人建造商 有时,开发人员可能不希望此默认构造函数可见。添加任何其他构造函数将使此构造函数无效。这可以是带有任何可见性修饰符的空参数的声明构造函数,也可以是不同的构造函数

在上述情况下,可能遵循以下模型之一:

Settings对象在Settings类中实例化,所有代码都是在这里运行的,这是一个Java通用模型,这样的类还将包含一个静态的mainString[]args方法

设置对象具有其他公共构造函数

设置对象是一个单例对象,通过访问器方法向对象提供设置对象的一个静态实例。例如:


它是一个私有构造函数。这意味着外部类不能使用默认构造函数创建新实例

更多信息 Java中的所有对象都有一个默认构造函数:

这就是你如何上这门课的方法:

public class MyObject{}
并且仍然能够拨打:

MyObject mObj = new MyObject();
私人建造商 有时,开发人员可能不希望此默认构造函数可见。添加任何其他构造函数将使此构造函数无效。这可以是带有任何可见性修饰符的空参数的声明构造函数,也可以是不同的构造函数

在上述情况下,可能遵循以下模型之一:

设置对象在 Settings类,所有代码都是在Java的公共模型中运行的,这样的类还将包含一个静态mainString[]args方法

设置对象具有其他公共构造函数

设置对象是一个单例对象,通过访问器方法向对象提供设置对象的一个静态实例。例如:


正如其他人提到的,具有私有构造函数的类不能从类外部实例化。在这种情况下,可以使用静态方法

class Demo
{

    private Demo()
    {
    }

 static void createObjects()
    {
       Demo o = new Demo();
    }

}

class Test
{
   public static void main (String ...ar)
{
    Demo.createObjects();
}

}

正如其他人提到的,具有私有构造函数的类不能从类外部实例化。在这种情况下,可以使用静态方法

class Demo
{

    private Demo()
    {
    }

 static void createObjects()
    {
       Demo o = new Demo();
    }

}

class Test
{
   public static void main (String ...ar)
{
    Demo.createObjects();
}

}

没有严格的true-类本身可以创建实例。在类之外不能创建任何实例。在这里,我们通过向上投票或接受答案来表示感谢。严格来说,不可能是真的-类本身可以创建实例。不能在类之外创建任何实例。此时,我们通过投票或接受答案来表示感谢。通过singleton设计模式-拥有私有构造函数的用例之一。通过singleton设计模式-拥有私有构造函数的用例之一。Java中的所有对象都有默认构造函数-这不是真的。如果您根本不提供任何构造函数,Java编译器将只添加一个默认构造函数。@Jesper,这将在问题中进一步解释。Java中的所有对象都有一个默认构造函数-这不是真的。如果您根本不提供任何构造函数,Java编译器将只添加一个默认构造函数。@Jesper,这将在问题中进一步解释。