java入门(十五) | OOP(二)之封装和private
封装
1.1 概述
封装是指隐藏对象的属性和实现细节
仅仅对外提供公共的访问路径/方式。
优点:
- 提高安全性
- 提高重用性
1.2 private关键字
private关键字是一个权限修饰符,用于修饰成员变量和成员函数。
被私有化的成员只能在本类中访问。
1.3 练习:封装学生类
Student类:
package cn.qile.oop;
//创建学生类--描述学生事物 属性+行为
public class Student {
// 属性 -- 成员变量
private String name;//被私有化的资源无法访问
//提供公共的访问方式 --setXxx()进行设置值
public void setName(String n) {
name = n;//给成员变量name赋值
}
//提供公共的访问方式 --getXxx()进行获取值
public String getName(){
return name;//把name属性的值,返回调用位置
}
//TODO 封装以下属性,并提供公共的set()/get()
int sno;//学号
String subject;//学科
double score;//成绩
int age;
String addr;
// 行为 -- 成员方法
//通过private关键字,实现封装,私有化资源
private void study() {
System.out.println("正在学习");
}
public void eat() {
System.out.println("正在吃饭");
}
}
测试学生类 Test2_Student:
package cn.qile.oop;
//测试学生类的使用
public class Test2_Student {
public static void main(String[] args) {
//创建学生对象测试
Student s = new Student();
//设置属性值
// s.name="其乐";//被私有化的资源无法访问
s.setName("其乐");//私有化后可以访问公共的set()设置值
s.age=20;
s.subject="java";
s.sno=1;
s.score=20;
s.addr="北京";
//打印属性值
// System.out.println(s.name);//被私有化的资源无法访问
//私有化后可以访问公共的get()获取值
System.out.println(s.getName()+"=========");//其乐 =========
System.out.println(s.age); //20
System.out.println(s.subject);//java
System.out.println(s.sno); //1
System.out.println(s.score); //20.0
System.out.println(s.addr); //北京
//调用功能
s.eat(); //正在吃饭
// s.study();//被私有化的资源,本类之外的类都无法访问
}
}
在测试中name成员变量被private修饰后,不能够被s.name所调用,而是通过所提供的get/set方法去调用;这就可以去提高数据的安全性;而当成员方法被private关键字所封装之后,就成为了私有化资源,不能够被本类之外的类访问。
在这给大家一个案例,你们可以自行去做:
老师事物:设置特性和功能
特征:姓名、年龄、住址
功能:授课 育人
测试:
1、创建Teacher对象
2、调用老师的属性和功能
3、修改老师的属性测试
4、封装Teacher类并测试