私有的,私密的 可以修饰成员变量、成员方法、构造方法、内部类。 被private修饰的成员,只能在本类中被访问。 private只是封装的一种体现形式,封装还可以使用其他的修饰符来完成
实例:
class private关键字1 { public static void main(String[] args) { Student s = new Student(); s.name = "Tom"; s.age = 10; s.score = 100; s.show(); } } class Student { private String name; private int age; private int score; public void show(){ System.out.println("name="+name+",age="+age+",score="+score); } }结果:
---------- 编译java ---------- private关键字1.java:8: 错误: name可以在Student中访问private s.name = "Tom"; ^ private关键字1.java:9: 错误: age可以在Student中访问private s.age = 10; ^ private关键字1.java:10: 错误: score可以在Student中访问private s.score = 100; ^ 3 个错误 输出完成 (耗时 0 秒) - 正常终止因为变量已经成为私有,所以无法再在主类进行访问,所以加载不到权限,程序报错。
这时候,getter和setter方法,就变得至关重要,为了保护变量的同时又能对变量赋值和取值,就要在类中对变量进行封装,这里也是封装的一种体现形式。
输出结果:
这时,就可以利用类中的方法来对成员变量进行赋值和取值了。
这里面set方法中,有一个关键字 this,也是十分重要的,this后面的变量是指代当前类中的成员变量,等号后面的变量是方法中传进来的局部变量,也就是把属性值在调用的时候传进来,然后再赋予给成员变量来达到给变量赋值的作用,这样的话可以少定义一些变量名,而且方便分析和记忆。
还有比较方便的一点是,可以在赋值的同时对传入的值进行条件控制,只赋予有价值是自己想要的值,例如输入名字不能太长,输入性别不能输入除了男女之外的信息等等。
例如:
import java.util.Scanner; class private关键字 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Student s = new Student(); boolean b_name; do{ System.out.println("please input your name:"); String name = sc.next(); b_name = s.setName(name); }while(b_name == false); s.setAge(10); s.show(); } } class Student { private String name; private int age; private int score; public boolean setName(String name){ if(name.length()>4){ System.out.println("input error!please input again!"); return false; } else { this.name = name; return true; } } public String getName(){ return name; } public int setAge(int age){ this.age = age; return age; } public int getAge(){ return age; } public void setScore(int score){ this.score = score; } public int getScore(){ return score; } public void show(){ System.out.println("name="+name+",age="+age+",score="+score); } }效果为: