java中私有构造函数的作用

1. 强调类的单例模式

public class Elvs {
    //公有的静态域,来说明该类只能有一个实例(实例化一次后,后面都是同一个实例)
    public static final Elvs INSTANCE=new Elvs();
    private Elvs(){}//将构造函数定义为私有变量后,就不能在外部去调用构造函数实例化类了
    public void  sys() {
        System.out.println("******");
    }
}
public class Main {
    public static void  main(String[] args){
        Elvs elvs=Elvs.INSTANCE;
        elvs.sys();
    }
}

注意上面的代码中,在其他的外部类中去实例化Elvs时,只能通过静态变量INSTANCE

public class Elvs {
    private static final Elvs INSTANCE = new Elvs();
    private Elvs() {}
    public static Elvs getInstance() {return INSTANCE;}
    public void sys() {
        System.out.println("******");
    }
}
public class Main {
    public static void  main(String[] args){
        Elvs elvs=Elvs.getInstance();
        elvs.sys();
    }
}

根据静态方法来获取类的实例,也是只能获取一个实例,实现单例模式

2. 通过类的私有构造函数来强调类的不可实例化

例如在实际的应用中,工具类,或者整个工程的常量类,在类中只有静态常量,

这时我们可以在类中去定义一个私有的构造函数,然后在类中不去调用它,这样

在其他的类处就不能实例化这个常量类了。

原文地址:https://www.cnblogs.com/silver-aircraft/p/12058997.html

时间: 2024-10-17 17:19:21

java中私有构造函数的作用的相关文章

Java中有关构造函数的一道笔试题解析

Java中有关构造函数的一道笔试题解析 1.具体题目如下 下列说法正确的有() A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名 C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor 2.解析说明 (1)class中的构造函数是可以省略的 /** * @Title:User.java * @Package:com.you.user.model * @Descrip

java中import、package作用和用法

  有些人写了一阵子 Java,可是对於 Java 的 package 跟 import 还是不 太了解很多人以為原始码 .java 档案中的 import 会让编译器把所 import 的程式通通写到编译好的 .class 档案中,或是认為 import 跟 C/C++ 的 #include 相似,实际上,这是错误的观念. 让我们先了解一下,Java 的 package 到底有何用处. 其实,package 名称就像是我们的姓,而 class 名称就像是我们的名字 .package 名称有很多

Java中的构造函数和重载

一.Java中的构造函数 构造函数是对象被创建时初始化对象的成员方法,它具有和它所在的类完全一样的名字.构造函数只能有入口参数,没有返回类型,因为一个类的构造方法的返回类就是类本身.构造函数定义后,创建对象时就会自动调用它,对新创建的对象分配内存空间和初始化.在 Java 中,构造函数也可以重载,当创建一个对象时, JVM 会自动根据当前对方法的调用形式在类的定义中匹配形式符合的构造方法,匹配成功后执行该构造方法. eg: public Class Dog { private int age:

JAVA中toString方法的作用

因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法 总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法 回答补充: 写这个方法的用途就是为了方便操作,所以在文件操作里面可用可不用 例子1: public class Orc { public st

有关java中私有成员能否被继承的问题

写程序中,无意中想到这个问题,随手搜了一下,发现大家对这个问题的看法不一 先看一下官方文档 http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html What You Can Do in a Subclass A subclass inherits all of the public and protected members of its parent, no matter what package the subcla

c#基础——类中私有构造函数作用

如果类成员有private修饰符,就不允许在类范围以外访问这个类成员.对类构造函数应用private修饰符时,则禁止外部类创建该类的实例.尽管看上去有些不好理解(既然不能实例化,那么这个类还有什么用处?),但实际上这是一个功能极其强大的特性. 最明显的是,如果类只通过静态方法和字段来提供功能,那么就常常使用私有构造函数.框架类库FCL中System.Math类就是一个很经典的例子. System.Math类有两个静态字段:pi和e(自然对数底数),还有一些返回三角函数值的方法.这些方法都作为内置

C#基础(五)——类中私有构造函数作用

如果类成员有private修饰符,就不允许在类范围以外访问这个类成员.对类构造函数应用private修饰符时,则禁止外部类创建该类的实例.尽管看上去有些不好理解(既然不能实例化,那么这个类还有什么用处?),但实际上这是一个功能极其强大的特性. 最明显的是,如果类只通过静态方法和字段来提供功能,那么就常常使用私有构造函数.框架类库FCL中System.Math类就是一个很经典的例子. System.Math类有两个静态字段:pi和e(自然对数底数),还有一些返回三角函数值的方法.这些方法都作为内置

java中的构造函数

在c++中就学习了构造函数,今天学习java又碰到了构造函数,重新写一篇博客来理解一下 其实直接听这个词并不能理解这是什么,但其实看了它的作用,就很好理解了 当创建一个对象时,往往需要做一些初始化工作,例如对数据成员赋值等.为了解决这个问题,C++提供了构造函数.构造函数(Constructor)是一种特殊的成员函数,它的名字和类名相同,没有返回值,不需要用户调用(用户也不能调用), 而是在创建对象时自动执行.构造函数的作用是在创建对象时进行初始化工作,最常见的就是对成员变量赋值. 其实就是这样

谈谈java中的构造函数

本篇博文主要是为新手.对java语言感兴趣的人和那些没有系统学习过java基础知识的人进行一个总结,在文章中对构造函数进行了较为详细的说明和讨论,也包含了我个人对于java面向对象中构造函数的一些看法.希望走在java学习道路上的同行者可以有一个较为清晰的认知和理解.当然仅为个人观点,水平有限,不足之处,还请大家多多指出,互相交流学习. 1.构造函数的概念 很多java新手谈到构造函数就会犯晕,我们先来看看什么是构造函数. 首先,构造函数是函数的一种特殊形式,特殊在哪里?构造函数中不需要定义返回