什么是封装
面向对象三大特征之一
1.把对象的状态和行为看成一个统一的整体,将字段和方法放到一个类中
2.信息隐藏:把不需要让外界知道的信息隐藏起来
尽可能隐藏对象功能实现细节,向外暴露方法,保证外界安全访问功能;
封装的好处
1.保证数据的安全
2.提高组件的复用性
使用private字段私有化变量
访问修饰符
访问权限修饰符来规定在一个类里面能看到什么,能暴露什么
访问修饰符 | 作用 |
---|---|
private | 表示私有的,表示类访问权限,只能在本类中访问,离开本类之后,就不能直接访问 |
protected | 保护 表示子类访问权限,同包中的可以访问,不同包不能访问,继承也可以访问 |
public | 表示全局的,可以公共访问权限,使用了public修饰,则可以在当前项目中任何地方访问 |
默认 | 表示包访问权限,访问者的包必须和当前定义类的包相同才能访问,没能继承 |
属性概念
什么是属性?
属性和字段类似,也是一个成员变量
但是必须要有getter/setter方法
有getter/setter
方法才是属性,没有就是字段
一般属性都是私有
的,共有的别人可以直接获取何设置值
this关键字
在一个方法当中,要给变量赋值,它会先到方法当中去找有没有该变量,
如果有,就该方法内部的变量赋值,不会在往上去找了,如果没有,就往它上一级去找
在方法当中变量前加上了this,就代表直接给对象当中的字段赋值
this : "这个" 当前正在使用对象的地址
使用:
1.帮我们区分成员变量和局部变量的二异性,必须得要使用this
String name;
int age;
User(String name, int age) {
this.name = name;//赋值给成员变量
this.age = age;
}
2.在同类当中,实例方法的调用,前面其实是有this,可以省略
void show() {
System.out.println(this.name);
}
void sayHello() {
this.show();
}
3.可以把this作为参数传递
4.可以当做返回值
5.static 不能和this一起使用
JVM加载static字节码的时候,this是当前使用对象,对象都没创建出来,所以会报错
6.构造器的重载互调,this();此时this代表是构造器名,必须写到第一行
User(String name){
this.name=name;
}
User(String name, int age) {
//必须写到第一行,this代表就是当前的构造器
this(name);
this.age = age;
}