Java私有构造函数作用原理解析

这篇文章主要介绍了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. 通过类的私有构造函数来强调类的不可实例化

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

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java对类私有变量的暴力反射技术讲解

    Java对类私有变量的暴力反射 假设有一个类,他有一个私有变量: package com.howlaa.day04; public class ReflectPoint { private int priVar; public ReflectPoint(int priVar){ this.priVar =priVar; } } 如果我们直接采用.get的方式,是不可能看到私有变量的. 我们可以这样: package com.howlaa.day04; import java.lang.refle

  • java接口私有方法实现过程解析

    这篇文章主要介绍了java接口私有方法实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 问题描述: 我们需要抽取一个共有方法,用来解决两个默认方法之间重复代码的问题 但是这个共有方法不应该让实现类使用,应该是私有化的. 解决方案: 从java 9开始,接口当中允许定义私有方法. 1.普通私有方法,解决多个默认方法之间重复代码问题 格式: private 返回值类型方法名称(参数列表){ 方法体 } 2.静态私有方法,解决多个静态方法之

  • Java 反射之私有字段和方法详细介绍

    尽管我们通常认为通过JAVA的反射机制来访问其它类的私有字段和私有方法是可行的,其实并没有那么困难. 注释:只有在单独的JAVA程序中运行该代码才有效,就像你做一些单元测试或者常规的程序.如果你尝试在JAVA APPLET内使用该方法,你需要稍稍修改SecurityManager.但是,因为你不是经常需要与它打交道,这里也就不再赘述了. 这里是本次内容的列表: 1.访问私有字段. 2.访问私有方法. 访问私有字段: 为了访问私有字段,你需要调用Class.getDeclaredField(Str

  • Java URL自定义私有网络协议

    --声明,脑残人士远离,本博客的核心不是if-else+前缀,而是如何通过URL协议处理框架定义私有协议 URI与URL的区别 URI (uniform resource identifier)统一资源标志符:URL(uniform resource location )统一资源定位符(或统一资源定位器):URI是一个相对来说更广泛的概念,URL是URI的一种,是URI命名机制的一个子集,可以说URI是抽象的,而具体要使用URL来定位资源.URI指向的一般不是物理资源路径,而是整个系统中的映射后

  • Java私有构造器使用方法示例

    构造器作为Java类的一个特殊的成员同样可以设置关键字来控制其访问权限.在大多数情况下,我们一般把构造器设置为公有成员,即public的,在默认情况下,如果不写任何关键字,其访问权限也是public.这样,在我们新建一个类的对象的时候,构造器会创建对象后被自动调用,发生在其他类成员被设置为默认初始值之后,当然如果有字段初始器和初始化块的话,构造器的调用会发生在此之后.构造器的主要作用是在new将对象的引用返回之前初始化对象. 言归正传,什么叫私有构造器.所谓私有构造器,就是用private关键字

  • 利用java反射机制调用类的私有方法(推荐)

    试想一下,如果你可以轻易地调用一个类的私有方法,那么是不是说你的封装都失效了?最近在看java的反射机制,发现居然可以利用java的反射机制去调用其他类的私有方法,至于这能干什么,那就见人见智了.. 我写的一段简易实例代码如下: import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * @author thomaslwq * @version 创建时间:Sep 4, 201

  • Java类锁、对象锁、私有锁冲突测试

    类锁和对象锁是否会冲突?对象锁和私有锁是否会冲突?通过实例来进行说明. 一.相关约定 为了明确后文的描述,先对本文涉及到的锁的相关定义作如下约定: 1. 类锁:在代码中的方法上加了static和synchronized的锁,或者synchronized(xxx.class)的代码段,如下文中的increament(): 2.对象锁:在代码中的方法上加了synchronized的锁,或者synchronized(this)的代码段,如下文中的synOnMethod()和synInMethod():

  • Java static(静态变量)和私有化功能与用法分析

    本文实例讲述了Java static(静态变量)和私有化功能与用法.分享给大家供大家参考,具体如下: 1.static作用主要有两方面:其一,当希望类中的某些属性被所有对象共享,则就必须将其声明为static属性:其二,如果一个类中的方法由类名调用,则可以将其声明为static方法. 2.需要注意的是,非static声明的方法可以去调用statci声明的属性和方法:但是static声明的方法不能调用非static类型的声明的属性和方法. 3.static方法调用static变量 public c

  • Java私有构造函数作用原理解析

    这篇文章主要介绍了Java私有构造函数作用原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1. 强调类的单例模式 public class Elvs { //公有的静态域,来说明该类只能有一个实例(实例化一次后,后面都是同一个实例) public static final Elvs INSTANCE=new Elvs(); private Elvs(){}//将构造函数定义为私有变量后,就不能在外部去调用构造函数实例化类了 public

  • JAVA如何定义构造函数过程解析

    这篇文章主要介绍了JAVA如何定义构造函数过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 构造函数在类里面定义,构造函数名一定要跟类名相同,实例化一个对象的时候,如果没有初始化成员变量,可以不用定义构造函数,系统会自己定义好,定义了也不会影响.如果实例化对象需要初始化成员变量就一定自定义构造函数. 定义构造函数 class Cat { String name; int age; //可定义可不定义,不定义时实例化一个对象会自动定义这个构

  • C#中私有构造函数的特点和用途实例解析

    本文以实例形式分析私有构造函数的特点,以及在何种情况下使用私有构造函数.相信对于大家更好的理解C#中的私有构造函数有一定的促进作用.具体如下: 一.带私有构造函数的类不能被继承 在Animal类中声明一个私有构造函数,让Dog类来继承Animal类. public class Animal { private Animal() { Console.WriteLine("i am animal"); } } public class Dog : Animal { } 运行程序,生成解决方

  • 解析C#中的私有构造函数和静态构造函数

    私有构造函数 私有构造函数是一种特殊的实例构造函数.它通常用在只包含静态成员的类中.如果类具有一个或多个私有构造函数而没有公共构造函数,则其他类(除嵌套类外)无法创建该类的实例.例如: class NLog { // Private Constructor: private NLog() { } public static double e = Math.E; //2.71828... } 声明空构造函数可阻止自动生成默认构造函数.注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有

  • java TreeMap源码解析详解

    java TreeMap源码解析详解 在介绍TreeMap之前,我们来了解一种数据结构:排序二叉树.相信学过数据结构的同学知道,这种结构的数据存储形式在查找的时候效率非常高. 如图所示,这种数据结构是以二叉树为基础的,所有的左孩子的value值都是小于根结点的value值的,所有右孩子的value值都是大于根结点的.这样做的好处在于:如果需要按照键值查找数据元素,只要比较当前结点的value值即可(小于当前结点value值的,往左走,否则往右走),这种方式,每次可以减少一半的操作,所以效率比较高

  • Java编程WeakHashMap实例解析

    简述: <Thinking in Java>第4版 P519 页 WeakHashMap一章读书笔记 WeakHashMap 用来保存WeakReference,这一结构云逊垃圾回收器自动清理键和值 在添加键和值的操作时,映射会自动使用WeakReference包装它们, 见jdk源代码, public V put(K key, V value) { Object k = maskNull(key); int h = hash(k); Entry<K,V>[] tab = getT

  • Java static关键字详细解析

    目录 static目的 static范围 静态(static)修饰 静态变量 静态方法 静态代码块 静态类 static变量存储在方法区(Method Area) static目的 java中的static关键字主要用于内存管理. static范围 使用范围:java static关键字可以用在变量.方法.代码块和嵌套类中. 作用范围:static关键字属于类,而不是类的实例. 静态(static)修饰 变量.方法:称为类变量/方法.静态变量/方法:修饰变量或方法,表示这个变量/方法属于这个类,

  • Java异常继承结构解析_动力节点Java学院整理

    Java异常类层次结构图: 异常的英文单词是exception,字面翻译就是"意外.例外"的意思,也就是非正常情况.事实上,异常本质上是程序上的错误,包括程序逻辑错误和系统错误.比如使用空的引用.数组下标越界.内存溢出错误等,这些都是意外的情况,背离我们程序本身的意图.错误在我们编写程序的过程中会经常发生,包括编译期间和运行期间的错误,在编译期间出现的错误有编译器帮助我们一起修正,然而运行期间的错误便不是编译器力所能及了,并且运行期间的错误往往是难以预料的.假若程序在运行期间出现了错误

  • java中使用sax解析xml的解决方法

    在java中,原生解析xml文档的方式有两种,分别是:Dom解析和Sax解析 Dom解析功能强大,可增删改查,操作时会将xml文档以文档对象的方式读取到内存中,因此适用于小文档 Sax解析是从头到尾逐行逐个元素读取内容,修改较为不便,但适用于只读的大文档 本文主要讲解Sax解析,其余放在后面 Sax采用事件驱动的方式解析文档.简单点说,如同在电影院看电影一样,从头到尾看一遍就完了,不能回退(Dom可来来回回读取) 在看电影的过程中,每遇到一个情节,一段泪水,一次擦肩,你都会调动大脑和神经去接收或

随机推荐