Java:封装、private(私有)、this关键字

封装

private(私有)

Student类中的属性age,一般人的年龄范围在0~100之间,如果给age赋值-5,就不符合实际情况
所以我们要引入private关键字来将age隐藏起来,
但是这样我们定义这个成员变量就没有意义,所以我们要提供设置和获取age的方法,供外界访问
并在设置age的方法中控制age的范围

private int age;//用private修饰age,使age只能在本类中使用
//获取age的方法
public int getAge() {
    return age;
}
//设置age的方法
public void setAge(int a) {
	if(a>=0&&a<=100)	//设置判断条件,控制age的范围
    	age = a;
}

private:
1.是一个权限修饰符
2.可以修饰成员变量和成员方法
3.被其修饰的成员只能在本类中被访问

封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
封装优点:隐藏实现细节,提供公共的访问方式,提高了代码的复用性,提高安全性。
封装原则:将不需要对外提供的内容都隐藏起来,把属性隐藏,提供公共方法对其访问。
注意:私有只是封装的一种体现,不可把封装等同于私有,我们最早接触到的封装就是方法

this
public String name;
public void setName(String name) {
    name = name;
}
public String getName() {
    return name;
}
/*
我们说过变量的起名要做到见名知意,那么我们将setName方法中的形参名称定义为name
*/
Student s=new Student();
s.setName("xx");
System.out.println(s.getName());
/*
输出的s的name为null
当"xx"作为实参传给形参name后,执行的name=name;这个赋值语句出现了问题
我们说过,如果出现局部变量和成员变量同名情况时,方法中的局部变量会采取就近原则
即这个赋值语句中的name都是局部变量,方法没有到方法外去找成员变量name
所以成员变量name的值没有发生改变,还是null
*/
//为了避免这种现象我们要使用this关键字
public String name;
public void setName(String name) {
    this.name = name;
}
public String getName() {
    return name;
}
/*
其实getName方法中的return name;的name前也应该加上this.
*/

this 代表本类的一个引用,你可以认为this代表的是一个本类对象,哪个对象调用这个方法,那么方法中的this就代表谁。

发布了26 篇原创文章 · 获赞 1 · 访问量 370

猜你喜欢

转载自blog.csdn.net/weixin_45919908/article/details/103499872
今日推荐