创建: 2020/11/18
完成: 2020/11/18
更新: 2020/11/21 增加泛型, enumeration, iterator
更改标题 [Java 类] => [Java 类, 泛型, Enumeration, Iterator]
更新: 2020/11/27 补充匿名类
更新: 2021/10/4 修改标题 [Java 类, 泛型, Enumeration, iterator] => [Java 类(class), 泛型, Enumeration, iterator], 以防止我自己找不到这篇文章
类 |
定义 |
class clsName {
// 实例变量
type1 varName1 = v1;
type2 varName2 = v2;
...
// 构造函数
clsName(prms) {
...
}
clsName(prms) {
...
}
// methods
rtype1 mthName1(params) {
...
}
rtype2 mthName2(params) {
...
}
}
- 不初始化的boolean默认false, 数值默认0, object默认null
|
生成实例 |
clsName v = new clsName(...);
|
匿名类 |
生成与定义在同一处
|
构造函数 |
- 不需要返回值(自动返回自身的参照)
- 不定义则默认生成没有参数的构造函数
- 继承
呼出super class的构造函数 |
- 必须在构造函数里先呼出super(args)
- 在构造函数里不呼出则默认执行 super();
|
|
|
|
this |
method内呼出自身变量,方法 |
|
构造函数里呼出别的构造函数 |
必须先呼出这个在进行其他构造函数的处理
|
|
实例变量与实例方法 |
- 实例变量
// 实例变量
type varName;
// 多个
type varName1, varName2, ...;
// 声明与初始化
type varName = v;
// 多个
type varName1 = v1, varName2 = v2, ...;
- 实例方法
// 实例方法
rtype mthName(params) {
...
}
|
静态变量与静态方法 |
- 静态变量
// 静态变量
static type varName1;
// 多个
static type varName1, varName2, ...;
// 声明与初始化
static type varName =v;
// 多个
static type varName1 = v1, varName2 = v2, ...;
- 静态方法
// 静态方法
static rtype mthName(params) {
...
}
- 静态代码块(初始化用)
|
local变量与范围 |
local变量 |
- 没有默认值
- 和实例或静态变量重名则优先local变量
|
范围 |
代码块(如method) |
|
overload |
signature不同即可 |
signature: 方法名与参数的数据类型, 数量 |
|
|
|
参数的参照 |
- 基本数据类型传递的是值
boolean, char, byte, short, int, long, double ,float
- 数组和Object传递的是参照
在函数里改变值外部也会发生变化
|
继承 |
写法 |
extends
class clsName2 extends clsName1 {
...
}
- 没有extends的都继承Object
- 只能有一个super class
|
类类型的变量 |
className varName;
//例
Sample v1;
|
super |
|
overload
|
变量overload |
- 和super class同名的变量存在时, 忽视super class的
- 要获取super class的,用 super
|
方法overload |
- 返回的类型必须和原来的一直
- 和super class同名的变量存在时, 忽视super class的
- 要获取super class的,用 super
|
|
|
|
|
|
|
|
|
|
|
修饰符 |
类修饰符 |
abstract |
不能生成实例
- 只需要声明, 不需要定义(可以定义)
- abstract类的method需要abstract的要分别添加 abstract
|
final |
不能被继承
|
public |
可以被所有类获取
|
不指定 |
不指定则只能在当前package里获取
|
|
变量修饰符 |
final |
值一旦被赋予则不能变
常用于定义常量
static final type varName = ...;
|
private |
- private, protected, public只能指定一个
|
protected |
- private, protected, public只能指定一个
|
public |
- private, protected, public只能指定一个
|
static |
|
transient |
|
volatile |
|
不指定 |
非final, 非transient, 非volatile |
|
|
|
|
|
构造函数修饰符 |
private |
只能在此类内部代码去调用 |
protected |
可以在此类内部, 子类内部, 同一package内调用 |
public |
能被所有类调用 |
不指定 |
默认package-private, 只有同package才能调用 |
|
方法修饰符 |
abstract |
|
final |
不能被子类重写 |
native |
导入其他语言的methods |
private |
只能在此类内部调用 |
protected |
只能被此类, 子类内部,同一package内调用 |
public |
|
static |
静态方法 |
synchronized |
多线程用 |
|
|
|
|
Object类 |
所有类都继承Object类
实例方法 |
boolean equals(Object obj) |
是否是同一个Object
比较的是pointer是否是同一个
|
Class getClass() |
获取当前实例的类 |
String toString() |
转换为字符串
|
|
|
|
|
Class类 |
- 封装程序运行时的class和interface信息
- JVM自动生成
实例方法 |
String getName() |
调用数据类型的名称 |
Class getSuperClass() |
|
|
静态方法 |
|
|
|
|
|
|
泛型 |
写法 |
<T, ...> |
指定class及其子类, 以及接口interface |
|
指定类及其父类 |
|
|
惯用符号
convetion symbols
|
E |
元素 |
K |
key |
N |
number |
T |
类型type |
V |
value |
S, U等 |
第二个及以后的类型 |
|
|
|
|
带泛型的类 |
class clsName<T> {
T varName; // 泛型作为类型直接用
// 方法
T mthName(T varName, ...) {
...
}
}
|
带泛型的方法 |
<T> rtype mthName(args) { ... }
// 例
<T> T sample(T v1, T v2, boolean v3) { ... }
|
指定泛型 |
clsName<t1, t2, ...> varName = new clsName<t1, t2, ...>(...);
// 例
ArrayList<Integer> ary = new ArrayList<Integer>();
|
|
|
Enumeration |
简介 |
https://docs.oracle.com/javase/7/docs/api/java/util/Enumeration.html
|
实例方法 |
boolean hasMoreElements() |
|
E nextElement() |
|
|
|
|
Iterator |
简介 |
https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html
|
实例方法 |
boolean hasNext() |
|
E next() |
|
void remove() |
删除返回的最后一个元素 |
|
|
|
|
|
|
|