文章目录
8.1static关键字
8.1.1基本概念
- 使用static关键字修饰成员变量表示静态的含义,此时成员变量由对象层级提升为类层级,也就是整个类只有一份并被所有对象共享,该成员变量随着类的加载准备就绪,与是否创建对象无关。
- static关键字修饰的成员可以使用引用.的方式访问,但推荐类名.的方式。
8.1.2使用方式
- 在非静态成员方法中既能访问非静态的成员又能访问静态的成员。
(成员:成员变量+ 成员方法,静态成员被所有对象共享) - 在静态成员方法中只能访问静态成员不能访问非静态成员。
(成员:成员变量+ 成员方法,因为此时可能还没有创建对象) - 只有隶属于类层级并被所有对象共享的内容才可以使用static关键字修饰。(不能滥用static关键字)
8.1.3构造块和静态代码块(熟悉)
- 构造块:在类体中直接使用{}括起来的代码块。
- 每创建一个对象都会执行一次构造块。
- 静态代码块:使用static关键字修饰的构造块。
- 静态代码块随着类加载时执行一次。
8.1.4单例设计模式的概念
- 在某些特殊场合中,一个类对外提供且只提供一个对象时,这样的类叫做单例类,而设计单例的流程和思想叫做单例设计模式。
8.1.4单例设计模式的实现流程
- 私有化构造方法,使用private关键字修饰。
- 声明本类类型的引用指向本类类型的对象,并使用private static关键字共同修饰。
- 提供公有的get方法负责将对象返回出去,并使用public static关键字共同修饰。
8.1.5单例设计模式的实现方式
- 单例设计模式的实现方式有两种:饿汉式和懒汉式,推荐饿汉式。
8.2继承
8.2.1继承的概念
- 当多个类之间有相同的特征和行为时,可以将相同的内容提取出来组成一个公共类,让多个类吸收公共类中已有特征和行为而在多个类型只需要编写自己独有特征和行为的机制,叫做继承。
- 在Java语言中使用extends(扩展)关键字来表示继承关系。
- 格式:子类、派生类、孩子类 extends 父类、超类、基类
- 使用继承提高了代码的复用性,可维护性及扩展性,是多态的前提条件。
8.2.2继承的特点
- 子类不能继承父类的构造方法和私有方法,但私有成员变量可以被继承只是不能直接访问。
- 构造子类的对象时自动调用父类的无参构造方法,来初始化从父类中继承的成员变量,相当于在构造方法的第一行增加代码super()。
- Java语言中只支持单继承不支持多继承,也就是说一个子类只能有一个父类,但一个父类可以有多个子类。
8.2.3方法重写的概念
- 从父类中继承下来的方法不满足子类的需求时,就需要在子类中重新写一个和父类一样的方法来覆盖从父类中继承下来的版本,该方式就叫做方法的重写(Override)。
8.2.4方法重写的原则
- 方法名相同、参数列表相同以及返回值类型相同,从Java5开始允许返回子类类型。
- 方法的访问权限不能变小,可以相同或者变大。
- 方法不能抛出更大的异常(异常机制)。
8.3访问控制
8.3.1常见的访问控制符
修饰符 | 本类 | 同一个包中的类 | 子类 | 其他类 |
---|---|---|---|---|
public | 可以访问 | 可以访问 | 可以访问 | 可以访问 |
protected | 可以访问 | 可以访问 | 可以访问 | 不能访问 |
默认 | 可以访问 | 可以访问 | 不能访问 | 不能访问 |
private | 可以访问 | 不能访问 | 不能访问 | 不能访问 |
8.3.2注意事项
- 通常成员方法用public,成员变量用private
8.3.3包的定义
- 定义类时,一般还要指定一个包,格式:
package 包名;
package 包名1.包名2.包名3…包名n; - 为了实现项目管理、解决命名冲突以及权限控制的效果。
8.3.4定义包的规范
- org . apache . commons . lang . StringUtil
- 公司或组织的信息(是这个公司(或组织)域名的反写). 项目的名称信息 . 模块的名称信息 **.**类名
8.3.5包的导入
- 使用import关键字导入包。
- 使用import关键字导入静态成员,从Java5.0开始支持。
8.4final关键字
8.4.1基本概念
- final可以修饰类、成员变量和成员方法
8.4.2使用方式
- final修饰类:不能被继承
主要用于防止滥用继承,如:java.lang.String类等。 - final修饰成员方法:不能被重写,可以被继承
主要用于防止不经意间造成重写,如:java.text.Dateformat类中format方法等。 - final修饰成员变量:必须初始化且不能改变
主要用于防止不经意间造成改变,如:java.lang.Thread类中MAX_PRIORITY等。
8.4.3常量的概念
- 通常用public static final修饰成员变量表示常量
- 常量命名规范:所有字母大写,不同单词之间用下划线连接