封装
权限修饰符: 权限修饰符就是控制变量可见范围的.
public:公共的.public修饰的成员变量或者方法任何人都可以访问.
private:私有的.private修饰的成员变量或者方法只能在本类中直接访问.
1.封装把尽可能多的东西隐藏起来,对所有属性藏起来,对外提供接口间接访问.
2.set/get方法访问private
3.逻辑块要写在方法里.
4.set用来指定条件无返回值.
5.get用来获取值有返回值.
封装的步骤:
1.使用private修饰需要被封装的属性.
2.提供一个公共的方法设置或者获取该私有的成员属性.
命名规范:
set属性名();
get属性名();
private setXXX(){}间接设置变量值; 对象.set变量名();
class 对象{
private String sex;
public void setSex(String s){
sex = s;
}
public void getSex(){
return sex;
}
}
class 类名{
public static void main(String[] args) {
对象.setSex("男/女"); // 用户改变
System.out.println(对象.getSex()); // 输出
}
}
现实开发中一般实体类的所有成员属性(成员变量)都要封装起来.
实体类:实体类就是用于描述一类事物的就称作为实体类.
工具类(arrays数组的工具类):
封装的好处:
1.提高数据的安全性.
防止错误修改;
2.操作简单.
提高系统独立性;
提高软件可重用性;
3.隐藏了实现.
降低大型系统的风险.
static修饰符
实例变量
包
- package只能有一个
- import可以有多个
- 想用不同包的同名类文件,可以创建以包+类为数据类型的对象
访问修饰符
作用域 | public | protected | 默认 | private |
---|---|---|---|---|
当前类 | √ | √ | √ | √ |
同包 | √ | √ | √ | |
子包 | √ | √ | ||
其他 | √ |
修饰类的:
public 默认
修饰成员类:
private 默认 protected public
static修饰符
实例变量:没有用static修饰,被创建对象的实例访问
-
在类的外部只能通过对象的实例调用,不能通过类名调用.
-
在类的内部方法可以随意访问实例和静态的变量和方法.
-
没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响.
类变量:被static修饰的变量(类名.xxx)
- 在内存中只有一个拷贝
- 在类的外部只能通过类名调用,不能对象实例调用.
// 直接类名调用,不用创建对象
Voter.printResult();
- 在类的内部,可以在任何方法内直接访问静态变量.也可以用对象实例来访问.
- 如果类所有实例都包含一个相同的常量属性,可以把这个属性定义为静态常量类型,从而节省空间.
// 类变量
public static String email;
// 调用静态变量
System.out.println(类名.email);
- 静态方法调用时是斜体
- 可以用类名.的是静态方法.
- 静态方法中不能使用this和super,也不能访问实例变量和实例方法
- 可以直接访问类的静态变量和静态方法.
- 静态方法是必须被实现的.
- main是静态的和类相关的,jvm先加载类,类又和静态方法相关,所以再运行时先找到当前类直接找当前类中的静态main,不需要创建对象.
- 静态变量不能声明在方法里.
static 代码块
public class StaticTest{
static int num = 100;
static{
num+=100;
System.out.println(num);
}
static{
num+=100;
System.out.println(num);
}
}
静态代码块和类一起加载
静态代码块只会被执行一次