day11
变量类型
成员变量
定义在类中,方法外;
在堆内存
成员变量具有默认值
生命周期:随着对象的存在而存在
局部变量
定义在方法中,或者方法的形参列表上;
在栈内存
没有默认值
生命周期:随着方法的调用而生成,方法调用完毕消失
封装
是面向对象语言的三大特征,另外两个是继承和多态
封装 隐藏对象的属性和实现的细节 仅对外提供公共的访问方式
提高安全性
用户不需要知道内部具体复杂的实现。只需要使用对应的功能即可
封装的原则
把不需要对外提供的内容隐藏起来
把属性隐藏掉,提供方法来修改,保证数据的安全
属性:
余额
stu1.name = "张三";
card.balance = 10000;
封装的实现
1. 用 private 修饰成员属性(成员变量)
2. 提供对应的公开的 public set和 public get方法
this关键字
this关键字可以用来区分局部变量和成员变量
public void setId(String id){
this.id = id; // this.id 就是成员变量
}
public void setId(String newId){
id = newId; // id 就是成员变量
}
构造函数(构造方法)
构造方法可以对对象进行初始化操作
当为对象开辟内存空间时,就给对象的成员变量赋初始值
在创建对象的时候,每创建一次对象就会执行一次构造方法
构造方法不能手动调用
用户如果没有写无参构造器,那么系统会默认提供一个;
当用户有写无参构造器,系统不提供了。
在构造方法中,可以借助this调用其他构造方法,
必须放到构造方法中的第一行有效代码上