Static--单例--继承

95 阅读3分钟

Static--单例--继承

1 Static

1.1 作用

可以修饰成员方法, 成员变量

1.2 类变量 (静态变量)
1.2.1 格式

​ static 数据类型 变量名

1.2.2 使用方法

​ 类名. 属性名

1.2.3 特点

​ 类变量储存在堆内存, class加载的时候就创建, 且快于成员变量

​ 在类加载的时候就已经加载在内存中(和类一起加载, 只加载一次), 只存在一次,因为可以被所有对象共享

1.3 类方法
1.3.1 格式
public static 返回值类型/void 方法名(...){
        return 值;
}
1.3.2 使用方法

​ 类名.方法名()

1.3.3 使用场景

​ 一般是用在工具类上, 一般里面包含静态方法, 都是用于完成某一样功能, 建立私有构造器

​ Javabean需要封装数据, 工具类不用封装数据.

1.4 注意事项
1.4.1 静态和实例

1). 类方法中, 可以使用类方法和类变量, 不能使用实例成员方法和成员变量.

​ 因为类方法在实例对象生成前就已经创建了, 这会导致调用类方法时, 根本没有实例对象可以调成员方法和成员变量.

2). 实例方法中, 既可以使用类成员, 也可以使用实例成员

​ 因为实例对象创建后, 静态变量/方法已经创建好了

3). 实例方法中, 可以使用this,类方法中, 不可以使用this

​ 同1), 找不到this指代的对象

1.5 代码块
1.5.1 静态代码块

​ 类加载中就生成, 而且只有一次. 用于静态资源初始化的阶段

格式: static {
}
1.5.2 实例代码块

​ 用于初始化实例变量, 每初始化一次就执行一次

格式: {
}
1.6 单例模式
1.6.1 定义

​ 单例模式指程序运行时,在java虚拟机中只存在该类的一个实例对象。则对外只提供一个实例对象, 多了不给, 少了不干. 单例模式分为两种: 1. 饿汉模式 2. 懒汉模式

1.6.2 模式--饿汉模式

​ 1). 私有构造器

​ 2). 创建一个类变量, 记录一个对象

​ 3). 对外提供一个方法, 可以返回上面对象的对象

1.6.3 模式--懒汉模式

​ 1). 私有构造器

​ 2). 创建一个类变量

​ 3). 对外提供一个方法, 先判断当前对象是否为null,如果是为null, 就去new 一个对象, 然后返回

2 继承

2.1 作用

​ 为了抽取多个类中相同的代码, 放在一个父类中, 从而简化代码, 减少代码的冗余. 又可理解为延伸. 构造器不会被继承.

​ 在多个类中有相同数据的时候使用.

2.2 格式
public class 子类  extends 父类{
}
2.3 特点

​ 继承父类中非私有的成员变量和成员方法

2.4 注意事项
2.4.1 权限修饰符

​ private(本类) < 默认(本类同一个包下的类) < protected(本类,同个包下的类, 子类) < public(所有地方)

2.4.2 体系

​ 1) Java只接受单继承, 不支持多继承, 但是支持多层继承, 但是可以嵌套多个接口interface;

​ 2) 所有的类,都是直接或者间接继承于 Object类)(老祖宗类, 和Js差不多概念)

2.4.3 方法重写

​ 当父类的方法没有办法满足子类的需求, 子类写一个跟父类一样的方法,覆盖掉父类中的访问.

​ 需要重写和重写的方法名要一模一样. private 静态方法都不能被重写.

2.4.4 继承之后成员的访问

​ 1) 就近原则

​ 2) 访问本类中的数据 this.变量/方法

​ 3)访问父类中的数据 super.变量/方法

2.4.5 继承之后构造器的访问

​ 构造器不会被继承.

​ 构造器==>初始化成员变量

​ 1) 子类构造器==>默认调用super()

​ 2) super() ==> 就是父类构造器和子类构造器相同的, 会把值传递给父类中成员变量

​ super 创建对象时把数据传递给父类

2.4.6 兄弟构造器的访问

this(...)

创建子类没有创建父类的对象--继承的内容 使用super内存空间在子类对象中存放数据