一、成员变量和局部变量的区别
1、在类中的位置不同
成员变量:类中,方法外
局部变量:方法或方法声明上(形式参数)
2、在内存中的位置不同
成员变量:堆内存
局部变量:栈内存
3、生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
3、初始化值的问题
成员变量:有默认值
局部变量:无默认值。必须先定义,复制,最后使用
上述代码之所以报错,就是因为y是局部变量,没有默认值,必须先定义才能使用。
二、private关键字
我们都知道通过对象直接访问成员变量,会存在数据安全问题。这个时候我们能不能不让外界的对象直接访问成员变量呢?答案当然是能!那么,如何实现呢?这就要用到----private关键字。
private:是一个修饰符
可以修饰成员变量,也可以修饰成员方法
用private修饰的成员只能在本类中访问
针对private修饰的成员变量,我们会相应的提供getXxx()和setXxx()用于获取和设置成员变量的值,方法用public修饰
例如:
package Demo05;
public class Student {
String name;
//int age;
private int age;
public void setAge(int a){
if (a<0||a>150) {
System.out.println("您给的年龄有误!");
}
age=a;
}
public int getAge(){
return age;
}
public void show(){
System.out.println("姓名是:"+name+",年龄是:"+age);
}
}
package Demo05;
public class StudentDemo {
public static void main(String[] args) {
//创建学生对象
Student s=new Student();
s.name="浅浅";
//s.age=-28;
s.setAge(-21);//输出结果为:您给的年龄有误!
s.show();
}
}
三、封装
封装是面向对对象三大特征之一,是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。通过方法来控制成员变量的操作,提高了代码的安全性;把代码进行封装,提高了代码的复用性。封装的原则:
把不需要对外提供的内容都隐藏起来。把属性隐藏,提供公共方法对其访问。成员变量的private,提供对应的getXxx()和setXxx()方法。