构造函数被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修饰后只能通过静态方法获得实例
目录
相关文章
|
2月前
|
设计模式 Java
静态方法可以访问实例成员变量吗
静态方法可以访问实例成员变量吗
|
6月前
|
Java 编译器
枚举类的final修饰
枚举类的final修饰
|
12月前
|
存储 Java
浅谈匿名内部类和局部内部类只能访问final变量
浅谈匿名内部类和局部内部类只能访问final变量
77 0
|
安全 编译器 C++
C++:类中const修饰的成员函数
C++:类中const修饰的成员函数
C++:类的static成员,友元和构造函数初始化列表
C++:类的static成员,友元和构造函数初始化列表
学生类-构造函数
学生类-构造函数
172 0
|
Java
JAVA:私有成员变量的调用 与 构造函数私有化 、构造函数保持成员变量私有性
私有成员变量的调用 与 构造函数私有化 、构造函数保持成员变量私有性的介绍
522 0
JAVA:私有成员变量的调用 与 构造函数私有化 、构造函数保持成员变量私有性
|
前端开发 开发者
class-实例方法和静态方法|学习笔记
快速学习 class-实例方法和静态方法
|
编译器
类的构造函数
类的构造函数
157 0