吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 629|回复: 3
收起左侧

[学习记录] Java中不可不知道的几个重要知识点

  [复制链接]
Kai1222 发表于 2022-4-10 15:55

ReviewDay 5

接口

接口是更加抽象的抽象类

  • 接口不能被实例化
  • 接口中所有的方法都是 public 方法
  • 接口中的抽象方法可以不用abstract
  • 接口的字段都是 public static final 的常量
  • 除了抽象类,实现接口的类必须实现接口的所有方法

接口与抽象类

  • 每个类只能继承一个类,但一个类可以同时实现多个接口

  • 接口不能继承其他的类,但可以继承多个别的接口

    interface A extends B, C{}

  • 实现接口与继承类
    • 接口与继承解决的问题不同

      继承价值主要在于解决代码的复用性和可维护性

      接口价值主要在于设计号各种规范,让其他类实现这些方法

    • 接口比继承更加灵活
    • 接口一定程度上实现代码解耦

接口的多态特性

  • 多态参数
  • 多态数组
  • 多态传递(实现的接口实现了另一个接口)

lambda 表达式

内部类

内部类的分类

  • 定义在外部类的局部位置(方法中、代码块)
    > (1)局部内部类 (有类名)
    >
    > (2)匿名内部类(没有类名)
  • 定义在外部类的成员位置
    > (1)成员内部类
    >
    > (2)静态内部类 (static)

局部内部类

  • 可以直接访问内部类的所有成员,包括私有的
  • 不能添加访问修饰符,相当于一个局部变量,但可以用final
  • 作用域仅在定义它的方法或代码块
  • 外部类和局部内部类的成员重名时,要访问外部类的成员时可以使用 (外部类名.this.成员)

匿名内部类

  • 既是一个类的定义,同时本身也是一个对象
  • 可以直接访问内部类的所有成员,包括私有的
  • 不能添加访问修饰符,相当于一个局部变量
  • 匿名内部类不能有构造器,但可以提供对象初始化代码块
  • 作用域仅在定义它的方法或代码块
  • 外部其他类不能访问匿名内部类
  • 常用于参数传递
    
    //基于类的匿名内部类
    Father father = new Father("jack") {
    @Override
    public void test() {
        //匿名内部类重写了方法
    }
    }

//基于抽象类的匿名内部类
//基于接口的匿名内部类
new Comparator() {
@Override
public int compare() {
//重写方法
}
}


### 成员内部类

- 成员内部类定义外部类的成员位置,并且没有static
- 可以添加访问修饰符
- 作用域与其他成员变量一样
- 外部类访问成员内部类时须创建对象再访问
- 外部类和局部内部类的成员重名时,要访问外部类的成员时可以使用 (外部类名.this.成员)

### 静态内部类

- 定义于外部类的成员位置,并且有static修饰 (有static修饰的成员内部类)

## 异常

### 执行过程中所发生的异常事件可以分为两大类

- Error(错误):JVM无法解决的严重问题,如StackOverflowError和OOM
- Exception:因编程错误或偶然的外在因素导致的一般性问题
  - 运行时异常
  > 编译器检查不出来,一般是编程时的逻辑错误
  - 编译异常
  > 编译器要求的必须处置的异常,否则不能通过编译

  ![exception体系图](http://pic.ruikai.ltd/img/202204101510019.png)

### 异常处理

- try-catch-finally
  > 捕获异常,自行处理
  1) 如果try块中没有出现异常,则执行try块中的所有语句,不再执行catch块,若有finally,最后还要执行finally块中语句
  2) 如果出现了异常,则try块中剩下的语句不在执行,将执行catch块,最后执行finally块
```java
        try{
        return 1;
        } catch Exception e {
        return 2;
        } finally {
        return 3;
        }
        //try 块中没有出现异常,catch块不执行,因为有finally块中的return(finally必须执行),所以finally中return执行,try中return不执行

        try{
            //出现异常   
        return 1;
        } catch Exception e {
        return 2;
        } finally {
        return 3;
        }
        //try 中出现异常,try中return不再执行, 又因为finally有return,所以catch中return不执行,finally中return被执行

        try{
            //出现异常    
        return 1;
        } catch Exception e {
        int a = 1;    
        return a;
        } finally {
        a += 1;
        }
        //try 中出现异常, catch被执行,执行到return时会将 a = 1保存为临时变量 temp = 1;最后finally修改后再执行catch块中的语句,并将临时变量返回,而不是修改后的a
  • throws/throw
    > 抛出异常,交给调用者处理
    >
    >  throw和throws的区别
    >  img

-try-with-resources(带资源的try语句)

        try (Resource res = ...) //res实现了Closeable接口(AutoCloseable的子接口)
        {
            work with res ...   
        }

> try 退出时,会自动调用res.close(),自动关闭资源(无论是否出现异常)
>
> try-with-resource也可以有catch、finally语句,这些语句将在资源被关闭后执行
>

自定义异常

1) 自定义类继承Exception或RuntimeException
2) 继承Exception则属于编译异常
3) 继承RuntimeException则属于运行异常

class AgeException extends RuntimeException {
    public AgeException(String message) {
        super(message);
    }
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
xiadongming 发表于 2022-4-10 16:53
提示: 作者被禁止或删除 内容自动屏蔽
fhefh 发表于 2022-4-10 18:01
wml52pj 发表于 2022-4-10 19:01
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 14:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表