构造函数被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修饰后只能通过静态方法获得实例
目录
相关文章
|
7月前
|
程序员
虚函数的修饰符:final override(仅能虚函数)
虚函数的修饰符:final override(仅能虚函数)
35 0
|
8月前
|
存储 Java
浅谈匿名内部类和局部内部类只能访问final变量
浅谈匿名内部类和局部内部类只能访问final变量
45 0
|
缓存 Dart 安全
Dart中的类——初始化列表、命名构造器、factory构造器、常量构造器、构造器私有化、get和set方法、枚举
Dart中的类——初始化列表、命名构造器、factory构造器、常量构造器、构造器私有化、get和set方法、枚举
学生类-构造函数
学生类-构造函数
131 0
|
前端开发 开发者
class-实例方法和静态方法|学习笔记
快速学习 class-实例方法和静态方法
62 0
|
前端开发 开发者
class-子类访问父类上的实例方法|学习笔记
快速学习 class-子类访问父类上的实例方法
88 0
|
存储
成员变量和方法的区别?
成员变量有两种: 实例变量 类变量(也称静态变量,静态域)
133 0
|
测试技术
Object C学习笔记10-静态方法和静态属性
  在.NET中我们静态使用的关键字static有着举足轻重的作用,static 方法可以不用实例化类实例就可以直接调用,static 属性也是如此。在Object C中也存在static关键字,今天的学习过程使用到了这个关键字,在这里记录一下static的使用。
1227 0