构造函数被private修饰后只能通过静态方法获得实例

简介: 构造函数被private修饰后只能通过静态方法获得实例

没有给构造函数加private时,可以new对象来访问,同时我们并没有写构造方法,因为它会自己去创建

class ArrayTool{
  public static void printArray(int[] arr){
    //打印数组
    System.out.print("[ ");
    for(int x = 0;x < arr.length;x++){
      if(x == arr.length-1){
        System.out.println(arr[x]+" ]");
      }else {
        System.out.print(arr[x]+" , ");
      }
    }
  } 
}


测试类

class Test{
  public static void main(String[] args){
    int[] arr = {11,22,33,44,55,34};
    ArrayTool at = new ArrayTool() ;
    at.printArray(arr) ;
  }
}

上面这个是通过无参构造方法创建的对象,如何将对象的创建(无参构造方法)禁止调用? private关键字

class ArrayTool{
  private ArrayTool(){}
  public static void printArray(int[] arr){
    //打印数组
    System.out.print("[ ");
    for(int x = 0;x < arr.length;x++){
      if(x == arr.length-1){
        System.out.println(arr[x]+" ]");
      }else {
        System.out.print(arr[x]+" , ");
      }
    }
  } 
}


class Test{
  public static void main(String[] args){
    int[] arr = {11,22,33,44,55,34};
    ArrayTool at = new ArrayTool() ;
    at.printArray(arr) ;
  }
}


我们编译说ArrayTool()可以在ArrayTool()中访问private,所以对象的创建(无参构造方法)禁止调用


20191031190706716.png


没有其它构造函数就只能通过静态方法来获得

class ArrayTool{
  private ArrayTool(){}
  public static void printArray(int[] arr){
    System.out.print("[ ");
    for(int x = 0;x < arr.length;x++){
      if(x == arr.length-1){
        System.out.println(arr[x]+" ]");
      }else {
        System.out.print(arr[x]+" , ");
      }
    }
  } 
}


class Test{
  public static void main(String[] args){
    int[] arr = {11,22,33,44,55,34};
    //ArrayTool at = new ArrayTool() ;
    //at.printArray(arr) ;
    //类名.成员方法() ;
    ArrayTool.printArray(arr);
  }
}

成功输出


20191031191502828.png


    当构造函数被private修饰后只能通过静态方法获得实例
目录
相关文章
|
3月前
|
存储 Java 编译器
实例化&&构造方法&&static统统都学会
实例化&&构造方法&&static统统都学会
31 0
|
3月前
|
Java 编译器
枚举类的final修饰
枚举类的final修饰
|
9月前
|
存储 Java
浅谈匿名内部类和局部内部类只能访问final变量
浅谈匿名内部类和局部内部类只能访问final变量
58 0
|
Java
Java中方法重写、修饰符、权限修饰符及final、static关键字
方法重写、修饰符、权限修饰符及final、static关键字的简单示例
109 0
Java中方法重写、修饰符、权限修饰符及final、static关键字
学生类-构造函数
学生类-构造函数
146 0
|
前端开发 开发者
class-实例方法和静态方法|学习笔记
快速学习 class-实例方法和静态方法
71 0
|
前端开发 开发者
class-子类访问父类上的实例方法|学习笔记
快速学习 class-子类访问父类上的实例方法
98 0
|
Java
JAVA:私有成员变量的调用 与 构造函数私有化 、构造函数保持成员变量私有性
私有成员变量的调用 与 构造函数私有化 、构造函数保持成员变量私有性的介绍
498 0
JAVA:私有成员变量的调用 与 构造函数私有化 、构造函数保持成员变量私有性