private关键字
封装可以用private实现,封装是指隐藏对象特定的属性和实现细节,对外仅提供公共的访问方式,也就是私有化。
private是一个权限修饰符,可以修饰成员变量和成员方法,被修饰的成员只能在本类中访问,其他类中不能通过对象名调方法访问, 但是private提供了get和set方法,给外界提供了设置和得到属性值得方法,用对象名去调用set和get方法即可。
private String name;//将姓名私有化
public String getName() {
return this.name;//设置一个getName的方法
}
public void setName(String name) {
this.name = name;//设置一个setName的方法
}
//在以下的测试类中调用这两种方法
//只有创建对象才可以调用方法
Student p=new Student();
p.setName("王小明");//设置姓名
String name = p.getName();//得到姓名
System.out.println(name);
static关键字
- static知识点
//学生类中的静态成员变量和成员方法
public static String place;
public static void show() {
System.out.println("这是一个静态方法");
}
//测试类
/*static是静态状态修饰词
* 随着类的加载而加载,优先于对象而存在,简单来说,就是static先随着类加载,然后再加载对象
* static可以修饰成员变量,成员方法
* 被static修饰的东西有两种方式调用
* a.类名.静态成员
* b.创建一个对象,通过对象名去调用(不推荐,繁琐)
*/
//a
Student.place="北京";
System.out.println(Student.place);
//b
Student student = new Student();
student.place="西安";
System.out.println(student.place);
/*需要注意的是,静态的只能访问静态的
* 非静态的可以访问非静态的,也可以访问静态的。
* 所以一定要记住的是,静态方法只能访问静态的成员变量和成员方法
*/
Student.show();//非静态的两者都可以访问
//Test2.add();//会提示将add方法改成static的
}
public void add() {
// TODO Auto-generated method stub
System.out.println("非静态");
}
/*static和this不能共存,前面说过,static随着类的加载而加载
* 然而this是指调用的对象,是随着对象的创建而产生的(new出来的)
* 所以static一定比this产生的早,如果你在static中运用this
* 也一定会报错
*
*/
- 静态变量和成员变量的区别:
(静态变量是被静态所修饰的)
1.加载时机的不同,静态变量,随着类的加载而加载,成员变量随着对象的创建而存在
2.所属不同:静态变量属于这个类(类变量),成员变量属于对象
3.存储位置的不同:静态变量存在方法区的共享区,成员变量存在堆内存
4.消失的时机的不同:静态变量随着类的消失而消失,成员变量随着对象的消失而消失
5.使用方式的不同:成员变量,通过对象去调用,静态变量 通过类名去调用。