Kai1222 发表于 2022-4-7 17:38

Java基础知识点总结

本帖最后由 Kai1222 于 2022-4-7 17:42 编辑

# ReviewDay3

## JAR 文件

### 创建jar文件

- jar options file1 file2
> jar cvf jarFileName file1 file2
> > jar cvf CalculatorClasses.jar *.class icon.gif

## 文档注释

### 生成注释

- 类注释
> import 语句之后, 类定义之前

- 方法注释
> 方法注释放在所描述方法之前

- 字段注释
> 只需要对公共字段(通常是静态常量)

- 通用注释
> @AuThor@version 等

- 包注释
> 不同于上面的注释直接放于源文件,包注释有两种选择
> 1) 提供一个 package-info.java
> 2) 提供一个 package.html

- 抽取注释
```java
javadoc -d docDirectory packageName1 packageName2
-d 指定html都将放置于的目录
```

## 继承

### 访问修饰符

- public*对外公开*
- protected*对子类和同一个包中的类公开*
- 默认没有修饰符,向同一个包的类公开
- private只有类本身可以访问,不对外公开
![访问修饰符](./img/访问修饰符.png)

### extends

- 父类,超类, 基类
- 子类,派生类,孩子类

### 方法重写(覆盖方法)

- @override
- 子类的方法和父类的方法**名称、返回类型、参数一样**
- 子类方法不能缩小父类方法的访问权限 *public>protected>default>private*

### super关键字

- 访问父类**非**private属性与方法
- 访问父类构造器 **super(参数列表)**
> ```注意```: 只能放在构造器的第一句,只能出现一句
- super 和 this 的比较
!(./img/superAndThis.png)

### 多态

- 方法的多态
> 方法的重写和重载体现多态
- 对象的多态
- *多态向上转型* ```可以调用父类中的所有成员(权限), 不能调用子类特有成员```
    > 子类对象赋给父类引用(父类引用指向了子类的对象)
    >
    > 父类类型 引用民 = new 子类类型();
    >
- *多态向下转型* ```只能强转父类的引用,而不是对象```
    > 子类类型 引用名 = (子类类型) 父类引用
    >
- 编译类型与运行类型
    > 编译类型看 “=” 左边, 运行类型看 “=” 右边
    >

### Object类:所有类的父类

- equals 方法
- "==": *如果判断基本类型,判断值是否相等;如果判断引用类型,判断地址是否相等*
- equals 方法是object的方法(默认判断地址‘==’),子类往往重写用于判断内容是否相等
```java
public boolean equals(Object obj) {
    if (this == obj) { return true; }
    if (obj == null) { return false; }
    if (this.getClass != obj.getClass) { return false; }
    //再向下转型
    ...
    //使用 == 判断基本类型字段(属性),使用 Objects.equals() 比较对象字段(引用类型)
    return ...
}
```

- hashCode() 方法
- Object类的默认hashCode方法是从对象的存储地址得出散列码
- 如果重新定义了equals方法,应重新定义hashCode方法 ```Objects.hash()```

- toString 方法
- System.out.println(x) *会调用x.toString()*
- 数组继承了object的toString方法
    > 调用静态方法打印数组 Arrays.toString(new int[] {1,2,3})
    >
    > 要打印多维数组,需要调用 Arrays.deepToString 方法

### 抽象类

- *abstract* 关键字
- abstract 修饰方法,表示这是抽象方法,没有方法体,需要子类实现
    > 访问修饰符 abstract 返回类型 方法名(参数列表); //没有方法体
    >
- 一旦类包含了abstract方法,该类必须声明为abstract类
- 抽象类不一定要包含abstract方法
- 一个类继承了抽象类,则必须实现抽象类的所有抽象方法,除非该类也声明为abstract类
- 抽象类不能用private、final、static来修饰(与重写相违背)

- 模板设计模式

```java
abstract public class Template { //抽象类-模板设计模式
public abstract void job();//抽象方法

public void calculateTime() {//实现方法,调用 job 方法
    //得到开始的时间
    long start = System.currentTimeMillis();
    job(); //动态绑定机制
    //得的结束的时间
    long end = System.currentTimeMillis();
    System.out.println("任务执行时间 " + (end - start));
}
}

public class AA extends Template {
    //计算任务
    //1+....+ 800000
    @Override
    public void job() { //实现 Template 的抽象方法 job
      long num = 0;
      for (long i = 1; i <= 800000; i++) {
      num += i;
    }
}

```
页: [1]
查看完整版本: Java基础知识点总结