在定义一个对象的特性的时候,有必要决定这些特性的可见性,即哪些特性对外部是可见的,哪些特性用于表示内部状态。

    通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。

    例如:
      

//对象不仅能在类中方法,还能在类的外部"直接"访问
         public class Student{
             public String name;
             public void println(){
                 System.out.println(this.name);
             }
         }
         public class Test{
             public static void main(String[] args){
                 Student s = new Student();
                 s.name = "tom";
             }
         }


    在类中一般不会把数据直接暴露在外部的,而使用private(私有)关键字把数据隐藏起来
    例如:

public class Student{
             private String name;
         }        public class Test{
             public static void main(String[] args){
                 Student s = new Student();
                 //编译报错,在类的外部不能直接访问类中的私有成员
                 s.name = "tom";
             }
         }

    如果在类的外部需要访问这些私有属性,那么可以在类中提供对于的get和set方法,以便让用户在类的外部可以间接的访问到私有属性
    例如:

//set负责给属性赋值
         //get负责返回属性的值
         public class Student{
             private String name;
             public void setName(String name){
                 this.name = name;
             }
             public String getName(){
                 return this.name;
             }
         }        public class Test{
             public static void main(String[] args){
                 Student s = new Student();
                 s.setName("tom");
                 System.out.println(s.getName());
             }
         }