文章目录
1. 包
- 包是用来分门别类的管理各种不同类的,类似于文件夹、建包利于程序的管理和维护
- 建包的语法格式:package公司域名倒写.技术名称(建议全部英文小写且具备意义)
- 建包语句必须在第一行,一般IDEA工具会帮助创建
导包:
- 同一个包下,互相可以直接访问
- 如果这个类中使用不同包下的相同的类名,此时默认只能导入一个类的包,另一个要使用全名访问
2. 权限修饰符
- 权限修饰符: 是用来控制一个成员能够被访问的范围
- 可以修饰成员变量、方法、构造器、内部类,不同权限修饰符修饰的成员能够被访问的范围将受到限制
权限修饰符的分类和具体作用范围:
作用范围由小到大(private -> 缺省 -> protected -> public)
修饰符 | 同一个类中 | 同一个包中其他类 | 不同包下的子类 | 不同包下的无关类 |
---|---|---|---|---|
private | ✔ | |||
缺省 | ✔ | ✔ | ||
protected | ✔ | ✔ | ✔ | |
public | ✔ | ✔ | ✔ | ✔ |
定义成员方法一般满足的需求:
- 成员变量一般私有
- 方法一般公开
- 如果该成员只希望本类访问,使用private修饰
- 如果该成员只希望本类同一个包下的其他类和子类访问,使用protected修饰
3. final
作用:
- final关键字是最终的意思,可以修饰(类、方法、变量)
- 修饰类:表明该类是最终类,不能被继承
- 修饰方法:表明该方法是最终方法,不能被重写
- 修饰变量:表示该变量第一次赋值后,不能再次被赋值(有且仅能被赋值一次)
注意点:
- final修饰的变量是基本类型:变量存储的数据值不能发生改变
- final修饰的变量是引用类型:变量存储的地址不能发生改变,但是地址指向的对象内容可以改变
4. 常量
- 常量是使用了
public static final
修饰的成员变量,必须有初始化值,而且执行的过程中其值不能被改变 - 作用和好处: 可以用作于系统的配置信息,方便程序维护,同时也能提高代码可读性
- 命名规范: 英文单词全部大写,多个单词下划线连接起来
执行原理:
- 在编译阶段会进行“宏替换”,把使用常量的地方全部替换成真实的字面量
- 这样做的好处是让使用常量的程序的执行性能与直接使用字面量是一样的
5. 枚举
枚举做信息标志和分类:代码可读性好,入参约束严谨
6. 抽象类
6.1 抽象类概述
- 在Java中abstract(抽象)可以修饰类、成员方法
/** 格式
修饰符 abstract class 类名{
修饰符 abstract 返回值类型 方法名称(形参列表);
}
举例*/
public abstract class Animal{
public abstract void run();
}
注意事项:
- 抽象方法只有方法签名,不能声明方法体
- 一个类中如果定义了抽象方法,这个类必须声明成抽象类,否则报错
- 一个类如果继承了抽象类,这个类必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类
6.2 特征和注意事项
- 类有的成员(成员变量、方法、构造器)抽象类都具备
- 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
- 一个类继承了抽象类必须重写抽象类的全部抽象方法,否则这个类也必须定义成抽象类
- 不能用abstract修饰变量、代码块、gouzaoq
- 最重要——得到了抽象方法,失去创建对象的能力
final 和 abstract 是什么关系?
- 互斥关系
- abstract 定义的抽象类作为模板让子类继承,final 定义的类不能被继承
- 抽象方法定义通用功能让子类重写,final定义的方法子类不能重写
7. 模板方法模式
- 提高了代码的复用性
- 模板方法已经定义了通用结构,模板方法不能确定的部分定义成抽象方法,交给子类实现
- 模板方法建议用
final
修饰,防止子类重写
8. 接口
8.1 接口概述、特点
//接口用关键字interface定义
public interface 接口名{
//常量
//抽象方法
}
public interface InterfaceDemo {
//注意:由于接口体现规范思想,默认都是公开的,所以代码层面(灰色部分)可以省略
//1. 常量
//public static final String SHCOOL_NAME = "cm";
String SHCOOL_NAME = "cm";
//2. 抽象方法
//public abstract void run();
void run();
}
8.2 接口的基本使用:被实现
接口是用来被类实现(implements
)的,实现接口的类称为实现类。(实现类可以理解成所谓的子类)
修饰符 class 实现类 implements 接口1,接口2,接口3,...{
}
8.3 接口与接口的关系:多继承
基本小结:
- 类与类的关系:单继承
- 类与接口的关系:多实现
- 接口与接口的关系:多继承,一个接口可以同时继承多个接口、
接口多继承的作用:
规范合并,整合多个接口为同一个接口,便于子类实现
8.4 JDK8开始接口新增方法
- 默认方法:
default
修饰,实现类对象调用 - 静态方法:
static
修饰,必须用当前接口名调用 - 私有方法:
private
修饰,jdk9开始有的,只能在接口内部被调用 - 他们都会被默认public修饰
- 这三种方法开发中很少使用,通常是Java源码涉及到
8.5 使用接口的注意事项
- 接口不能创建对象
- 一个类实现多个接口,多个接口中有同样的静态方法不冲突
- 一个类继承了父类,同时又实现了接口,父类中和接口中有同名方法,默认用父类的
- 一个类实现了多个接口,多个接口中存在同名的默认方法,不冲突,这个类重写该方法即可
- 一个接口可以继承多个接口,但如果多个接口中存在规范冲突则不能多继承