一、static关键字
1、static变量
- 调用方法:类名.属性名
- static方法不能访问非静态成员
- 内存分配:
static变量与非静态变量的区别:
区别 | static变量 | 非静态变量 |
份数 | 1份 | 每个对象1份 |
内存中位置 | 元空间(metaspace) | 堆 |
创建时间 | 加载类 | 创建对象 |
调用方式 | 类名.变量名 | 对象名.变量名 |
生命周期 | 与类一致 | 与对象一致 |
2、static方法
作用:访问static方法/变量
调用方式:类名.方法名
static方法不可以访问:
- 不可以访问非静态方法
- 不可以访问非静态变量
- 不可以访问this
理解:加载类的时候就加载静态变量和静态方法,此时可能还没有创建对象,所以非静态变量和非静态的方法还没有分配空间,无法访问
3、static代码块
- 位置:类中
- 数量:多个
- 执行顺序:依次执行
- 执行时间:第一次加载类的时候执行,只执行一次
- 作用:给静态变量赋初始值。实际开发中使用比较多,一般用于执行一些全局性的初始化操作,比如创建工厂、加载数据库初始信息。
二、package和import
1、package注意事项:
- 包名:域名倒着写即可,再加上模块名,便于内部管理类。
- 包名一律小写。
- 写项目时都要加包,不要使用默认包。
2、import:便于编写代码,提高可维护性。
3、Idea生成文档注释
三、封装性
1、权限修饰符
- private:本类中使用
- default:本包中使用
- protected:本包及其他包下的子类
- public:所有包
类的成员处理:一般用private修饰,通过set,get方法修改、获取(boolean变量通过is获取)
2、封装的优点
- 提高代码的安全性
- 提高代码的复用性
- 高内聚:封装细节,便于修改内部代码,提高可维护性
- 低耦合:简化外部调用,便于扩展协作‘
四、继承性
1、继承作用
- 子类继承父类,可以得到父类的全部属性和方法 (除了父类的构造方法),但不见得可以直接访问(比如,父类私有的属性和方法)。
2、方法重写(override)
| 修饰符 | 返回值 | 方法名 | 参数 | 抛出异常 | |
重载 | 无关 | 无关 | 相同 | 不同 | 无关 | |
重写 | 大于等于 | 小于等于 | 相同 | 基本数据类型:相同 | 引用数据类型:小于等于 | 小于等于 |