类的封装性不只体现在对属性的封装上,实际上方法也是可以封装的。下面主要介绍对构造方法的封装。

封装是指一切都对外部不可见,那么意味着外部无法调用封装后的构造方法。既然外部不能调用,那么内部那?

通过在Student类内部实例化对象instance,但必须定义为static类型(以便外部访问)。创建一个返回类型为Student的方法将实例返回(需要判断是否实例化了)。在外部把返回的实例赋值给Student类中的另一个对象,此对象就可以就可以调用Student类的普通方法。

注意:永远只会有一个实例化对象存在  --->单例模式(只要将构造方法私有化,就可以控制实例化对象的产生)

单例模式主要有以下两种形式:

1.饿汉式

class Student{

   private static Student instance=new Student();     //定义为static类型

   private Student(){}     //将构造方法封装

   public static Student getInstance(){     //将实例返回

      if(instance==null){

        instance=new Student();

      }

        return instance;

   }

   public void show(){

      system.out.println("HelloWorld!!");

}

}

public class TestStudent{

    public static void main(String[] args){

      Student stu1=Student.getInstance;     

      stu1.show();

    }

 

2.懒汉式

class Student{

   private static Student instance;

   private Student(){}

   public static Student getInstance(){

      if(instance==null){

        instance=new Student();

      }

        return instance;

   }

   public void show(){

      system.out.println("HelloWorld!!");

}

}

public class TestStudent{

    public static void main(String[] args){

      Student stu2=Student.getInstance;

      stu2.show();

    }

 

分析:饿汉式和懒汉式的区别主要体现在实例化对象的顺序。可以发现,整个过程中只会有一个实例化对象产生!