A:封装概述
是面向对象三大特征之一(封装/继承/多态 )
是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。就像刚才说的年龄。
B:封装原则:
将不需要对外提供的内容都隐藏起来。
把属性隐藏,提供公共方法对其访问。
成员变量private,提供对应的getXxx( ) / setXxx( )方法
C:好处:
通过方法来控制成员变量的操作,提高了代码的安全性
把代码用方法进行封装,提高了代码的复用性
package Object;
/*
学生类:
起名字我们要求做到见名知意;
而我们现在代码中的a就没有做到见名知意,需要进行改进
** 就近原则:变量在使用的时候,有局部变量和成员变量重名,则采用就近原则
首先找到和使用的是局部变量;
有无办法把局部变量的name赋值给成员变量的name呢?
有: 使用this关键字就可以解决这个问题
this:代表所在类的对象引用;
方法被那个对象调用,this就代表那个对象
使用场景:
局部变量隐藏成员变量
*/
public class Student03 {
//创建对象
//成员变量
//String name;
//int age;
//改为private修饰
private String name;
private int age;
public void setName(String name){
//原来为String a;
//name=name;//a 没有做到见名知意
this.name=name;//name没有加this,指代最近的String name;
}
public String getName(){
return name;
}
public void setAge(int age){
//原来为String a;
//age=age;//a 没有做到见名知意
this.age=age;
}
public int getAge(){
return age;
}
//成员方法
public void show(){
System.out.println("姓名:"+name+" 年龄:"+age);
}
}
package Object;
public class StudentDemo03 {
public static void main(String[] args) {
Student03 s=new Student03();
s.show();
//区别于下面的
System.out.println("姓名:"+s.getName()+" 年龄:"+s.getAge());
s.setName("李磊");
s.setAge(20);
s.show();
s.setName("韩飞");
s.setAge(18);
s.show();
}
}