一、类
1.类是什么
1.1 类的定义
类是具有相同属性(变量)和行为(方法)的对象的集合,类定义了对象的属性和方法。
1.1 类的基本结构
一个完整的类通常由以下基本结构组成:
包定义语句
import 语句
类的声明{
成员变量
构造方法
成员方法
}
其中类的声明必写,其他可选。
1.2 类的声明
1)主类一定是public;
2)内部类可以是private或者static;
/**
*访问权限修饰符(主类默认为public)可选修饰符(final、abstract、synchronized) class 类名 可选关系描述(implements 类名、extends 类名){
* 类体
*}
**/
public class 类名{
类体
}
1.3 类的编译
java类的编译是指将 .java 源码文件编译成 .class 二进制字节码文件的过程。
类编译时,如果该类依赖的类没有被编译的话,会先编译依赖的类。
1)源码文件手动编译
在java源码文件所在的目录文件下通过cmd输入以下命令行语句可以实现具体编译及查看编译过程:
PS:如果源码文件中包含中文注(含注释)的话,需要加编码说明,不然会报“错误: 编码GBK的不可映射字符”的错误
/**
* 生成 .class 文件
**/
//源码文件中不含中文
源码文件地址 javac 类名
//源码文件中(含注释)包含中文
源码文件地址 javac -encoding UTF-8 类名
//查看编译过程
源码文件地址 javac 类名 -verbose
//运行java文件
源码文件地址 java 类名
2)IDEA等自动编译
项目代码部署在IDEA等编译器上,点击项目 运行 按钮,自动生成 .class 文件,存放在 out 文件夹中,查看 .class 文件可以看到自动补全了类的构造函数(如果没有定义的话)
3)具体编译过程
类的编译过程需要词法分析器、语法分析器、语义分析器、代码生成器进行解析
2 特殊类说明
2.1 final 类
2.1.1 类样式
public final class 类名 可选关系描述(implements 类名、extends 类名){
类体
}
2.1.2 final 类说明
如果类被 final 修饰,则:
1) 表明该类不可被继承,即此类在继承树中为叶子类;
2) 该类的所有方法隐式默认为final;
3) 谨慎设置,适用情况:
A、强安全考虑,类的实现细节不允许有任何改变;
B、类设计之初就确信该类后续不会被扩展;
假设在编译器中定义了一个 final 类,尝试继承时编译器会主动报错:Cannot inherit from final “XXX”
2.2 抽象类
2.2.1 抽象类的定义
用关键字abstract修饰的类被称为抽象类,
2.2.2 抽象类形态
public abstract class 类名 可选关系描述(implements 类名、extends 类名){
类体
}
2.2.3 抽象类说明
1)抽象类中可以有抽象方法,也可以有非抽象方法;
2)如果一个类中有抽象方法,那么他一定得被定义成抽象类(报错语句:Abstract method in non-abstract class);
3)抽象父类被子类继承时,子类必须定义抽象父类的抽象方法,非抽象方法可以选择性继承;
4)抽象类中的抽象方法不能有方法体;
5)子类继承抽象父类的方法体时,最好在
2.2.4 抽象类的应用
2.2.5 抽象类与设计模式