面向对象编程-2

一、static关键字

1、static变量

  • 调用方法:类名.属性名
  • static方法不能访问非静态成员
  • 内存分配:

static变量与非静态变量的区别:

区别 static变量 非静态变量
份数 1份 每个对象1份
内存中位置 元空间(metaspace)
创建时间 加载类 创建对象
调用方式 类名.变量名 对象名.变量名
生命周期 与类一致 与对象一致

2、static方法

作用:访问static方法/变量

调用方式:类名.方法名

static方法不可以访问:

  1. 不可以访问非静态方法
  2. 不可以访问非静态变量
  3. 不可以访问this

理解:加载类的时候就加载静态变量和静态方法,此时可能还没有创建对象,所以非静态变量和非静态的方法还没有分配空间,无法访问

3、static代码块

  1. 位置:类中
  2. 数量:多个
  3. 执行顺序:依次执行
  4. 执行时间:第一次加载类的时候执行,只执行一次
  5. 作用:给静态变量赋初始值实际开发中使用比较多,一般用于执行一些全局性的初始化操作,比如创建工厂、加载数据库初始信息。

二、package和import

1、package注意事项:

  • 包名:域名倒着写即可,再加上模块名,便于内部管理类。
  • 包名一律小写。
  • 写项目时都要加包,不要使用默认包。

2、import:便于编写代码,提高可维护性。

3、Idea生成文档注释

三、封装性

1、权限修饰符

  • private:本类中使用
  • default:本包中使用
  • protected:本包及其他包下的子类
  • public:所有包

类的成员处理:一般用private修饰,通过set,get方法修改、获取(boolean变量通过is获取)

2、封装的优点

  • 提高代码的安全性
  • 提高代码的复用性
  • 高内聚:封装细节,便于修改内部代码,提高可维护性
  • 低耦合:简化外部调用,便于扩展协作‘

四、继承性

1、继承作用

  • 子类继承父类,可以得到父类的全部属性和方法 (除了父类的构造方法),但不见得可以直接访问(比如,父类私有的属性和方法)。

2、方法重写(override)

 

修饰符

返回值

方法名 

                               参数

抛出异常

重载

无关

无关

相同

                               不同

无关

重写

大于等于

小于等于

相同

基本数据类型:相同

引用数据类型:小于等于

小于等于