1.1 private关键字的概述和特点
1.1.1private关键字
- private关键字:
- 是一个权限修饰符。
- 可以修饰成员(成员变量和成员方法)
- 被private修饰的成员只在本类中才能访问。
1.1.1.1案例代码
package com.itheima_01;
/*
* 直接使用对象名访问成员变量,会存在数据的安全问题
* 这个时候,我们就应该思考能不能让外界不要直接访问成员变量?
* 能
* 如何实现呢?
* 用private关键字
* private:
* 是一个修饰符
* 可以修饰成员变量,也可以修饰成员方法
* 被private修饰的成员只能在本类中被访问
*
* 针对被private修饰的成员变量,我们会相应的给出getXxx()和setXxx()用于获取和设置成员变量的值,
* 方法用public修饰
*/
public class Student {
String name;
//int age;
private int age;
public void setAge(int a) {
if(a<0 || a>200) {
System.out.println("你给的年龄有误");
}else {
age = a;
}
}
public int getAge() {
return age;
}
public void show() {
System.out.println(name+"***"+age);
}
}
package com.itheima_01;
/*
* 测试类
*/
public class StudentTest {
public static void main(String[] args) {
//创建对象
Student s = new Student();
s.show();
//给成员变量赋值
s.name = "林青霞";
//s.age = 30;
//s.age = -30;
//通过方法赋值
s.setAge(-30);
s.show();
}
}
1.2 private修饰后的标准类代码
- rivate最常见的应用:
-
把成员变量用private修饰
-
提供对应的getXxx()/setXxx()方法
-
1.2.1案例代码
package com.itheima_02;
/*
* 学生类
*/
public class Student {
private String name;
private int age;
public void setName(String n) {
name = n;
}
public String getName() {
return name;
}
public void setAge(int a) {
age = a;
}
public int getAge() {
return age;
}
}
package com.itheima_02;
/*
* 测试类
*/
public class StudentTest {
public static void main(String[] args) {
//创建对象
Student s = new Student();
System.out.println(s.getName()+"***"+s.getAge());
//给成员变量赋值
s.setName("林青霞");
s.setAge(30);
System.out.println(s.getName()+"***"+s.getAge());
}
}
1.3 封装的概述和好处
- 封装概述
- 是面向对象三大特征之一
- 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。就像刚才说的年龄。
- 封装原则:
- 将不需要对外提供的内容都隐藏起来。
- 把属性隐藏,提供公共方法对其访问。
- 成员变量private,提供对应的getXxx()/setXxx()方法
- 好处:
- 通过方法来控制成员变量的操作,提高了代码的安全性
- 把代码用方法进行封装,提高了代码的复用性
1.4 this关键字的概述和使用
1.4.1 this关键字由来和使用
- this:代表所在类的对象引用
方法被哪个对象调用,this就代表那个对象
- 什么时候使用this呢
局部变量和成员变量重名
1.4.1案例代码
package com.itheima;
/*
* 学生类
*
* 目前代码中的n和a没有做到见名知意,需要改进。
*
* 如果局部变量名称和成员变量名称一致,在方法中使用的时候采用的是就近原则。
*
* 我们有没有办法把局部变量的name赋值给成员变量的name呢?
* 有
*
* 有什么办法呢?
* 用this关键字就可以解决这个问题
*
* this:代表所在类的对象引用
* 方法被哪个对象调用,this就代表谁。
*
* 使用场景:
* 就是用于解决成员变量被隐藏的问题。
*/
public class Student {
private String name;
private int age;
public void setName(String name) { //"林青霞"
//name = name;
this.name = name;
}
public String getName() {
return name;
//return this.name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
package com.itheima;
/*
* 测试类
*/
public class StudentTest {
public static void main(String[] args) {
// 创建对象
Student s = new Student();
System.out.println(s.getName() + "---" + s.getAge());
s.setName("林青霞");
s.setAge(30);
System.out.println(s.getName() + "---" + s.getAge());
}
}
网友评论