构造函数被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
被final修饰的类的所有方法都不能被重写吗
在Java中,被`final`修饰的类不能被继承,因此其所有方法也不能被重写。`final`关键字确保了类的定义和行为不会被子类改变。
103 1
|
2月前
在类中使用静态方法和实例方法有什么区别?
在类中合理地使用静态方法和实例方法,可以更好地组织和管理代码,提高代码的可读性、可维护性和性能,根据具体的业务需求和逻辑来选择使用哪种方法是编写高质量面向对象代码的关键。
|
4月前
|
设计模式 Java
静态方法可以访问实例成员变量吗
静态方法可以访问实例成员变量吗
|
8月前
|
Java 编译器
枚举类的final修饰
枚举类的final修饰
|
存储 Java
浅谈匿名内部类和局部内部类只能访问final变量
浅谈匿名内部类和局部内部类只能访问final变量
97 0
|
设计模式 存储 安全
C++的单例模式为什么不直接全部使用static,而是非要实例化一个对象?
C++的单例模式为什么不直接全部使用static,而是非要实例化一个对象?
511 1
C++的单例模式为什么不直接全部使用static,而是非要实例化一个对象?
学生类-构造函数
学生类-构造函数
201 0
|
前端开发 开发者
class-子类访问父类上的实例方法|学习笔记
快速学习 class-子类访问父类上的实例方法
129 0
|
前端开发 开发者
class-实例方法和静态方法|学习笔记
快速学习 class-实例方法和静态方法

热门文章

最新文章