设计稿在桌上,一叠伟大梦想
当成这些卖不出去公仔的床
一、封装
1、什么是封装
指隐藏对象的属性和实现细节,仅对外提供公共访问方式
2、封装的优点
隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性。
3、private 关键字
是一个权限修饰符
可以修饰成员变量和成员方法
被 private 修饰的成员只能在本类中才能访问
4、封装方法
//创建一个三个成员变量为 private 的类
class Character{
private String name;
private int level;
private int money;
public void setName(String a){
name = a;
}
public void setLevel(int l){
level = l;
}
public String getName(){
return name;
}
}
public class TestCharacter {
public static void main(String[] args) {
Character fgh = new Character();
fgh.setName("fgh");
fgh.setLevel(50);
String a = fgh.getName();
//此处只能通过调用方法来达到修改成员变量的目的,无法通过直接访问来修改
fgh.name = "fgh";
//如该语句,将会报错
}
}
二、细枝末节
1、this 关键字
在上述代码中,存在
public void setLevel(int l){
level = l;
类似此类的写法,为了更加方便使用变量,我们会希望能否通过局部变量 level 来赋值成员变量 level 。二根据变量引用的就近原则,同时出现两个 level 名变量是无意义的,因此出现关键 this 来处理这一情况。
this
1、是对当前对象引用。谁调用类中的方法,那个方法内的this就代表谁
2、如果在一个方法中访问了一个变量,该变量只存在成员变量的情况下,那么java编译器会默认在该变量的前面添加this关键字
public void setLevel(int level){
this.level = level;
这是对上述代码的改写。当通过调用 setLevel 方法对当前对象的成员变量进行赋值时,如对象 a ,此时 this 会指向对象 a ,达到对 a 的成员变量进行赋值的目的。
this 关键字解决了局部变量和成员变量同名的问题,隐藏成员变量
使用 this 时的内存使用情况
2、构造方法
在创建对象时
Character fgh = new Character();
这里的 Character() 正是我们用到的构造方法。但是之前在类中并没有看到相关的定义,我们却可以调用它。是因为当没有主动定义构造方法时,系统会默认生成一个没有参数构造方法供使用者使用。
构造方法
给对象的数据进行初始化。具有如下特征
1、方法名与类名相同
2、无返回值,因此也无返回值类型的修饰词
3、当没有提供构造方法,系统会默认生成一个无参数的构造方法
4、当提供了构造方法,系统将不会提供默认生成的构造方法
5、构造方法可以重载
class Character{
private String name;
public Character(){
} //若未主动提供,系统将自动生成的构造方法
public Character(String name) {
this.name = name;
} //主动提供的带形参的构造方法,可以提前赋值变量 name
}
总结
面向对象
封装
this 关键字
构造方法