Java面向对象部分重点笔记(二)

Java面向对象部分重点笔记(二)

接口

image-20230227120025215

 

声明类的关键字是class,声明接口的关键字是interface

 

接口的作用: 1.接口是一种约束 2.定义一些方法,让不同的类实现 3.接口中的方法都是默认 public abstract 4.接口中的变量都是默认 public static final 常量 5.接口不能被实例化,因为接口中没有构造方法 6.implements 可以实现多个接口,但是必须要重写接口中的方法

 

 

接口和抽象类的区别

 

区别点接口抽象类
含义 接口通常用于描述一个类的外围能力,而不是核心特征。类与接口之间的是-able或者can do的关系。 抽象类定义了它的后代的核心特征。派生类与抽象类之间是is-a的关系。
方法 接口只提供方法声明。 抽象类可以提供完整方法、缺省构造方法以及用于覆盖的方法声明。
变量 只包含public static final常量,常量必须在声明时初始化。 可以包含实例变量和静态变量。
多重继承 一个类可以继承多个接口。 一个类只能继承一个抽象类。
实现类 类可以实现多个接口。 类只从抽象类派生,必须重写。
适用性 所有的实现只是共享方法签名。 所有实现大同小异,并且共享状态和行为。
简洁性 接口中的常量都被默认为public static final,可以省略。接口中的方法被默认为public abstract。 可以在抽象类中放置共享代码。必须用abstract显式声明方法为抽象方法。
添加功能 如果为接口添加一个新的方法,则必须查找所有实现该接口的类,并为它们逐一提供该方法的实现。 如果为抽象类提供一个方法,可以选择提供一个缺省的实现,那么所有已存在的代码不需要修改就可以继续工作。

 

内部类

  • 内部类就是在一个类的内部再定义一个类,比如A类中定义一个B类,那么B类相对于A类来说就称为内部类,而A类相对于B类来说就是外部类了。

  • 内部类分为:

      1. 成员内部类

      2. 静态内部类

      3. 局部内部类

      4. 匿名内部类

 

异常

要理解Java异常处理是如何工作的,需要掌握以下三种异常

  • 检查性异常: 最具代表的检查性异常时用户错误或问题引起的异常,这是程序员无法预见的的。例如要打开一个不存在文件时,一个异常就发生了,这些异常再编译时不能被简单地忽略。

  • 运行时异常: 运行时异常时可能被程序员避免的异常。与检查性异常相反,运行时异常可以再编译时被忽略。

  • 错误 (Error) : 错误不是异常,而是拓宽i程序员控制的问题。错误再代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

 

image-20230227173213913

 

Error

image-20230227174545973

 

 

 

Exception

image-20230227174646888

 

 

用户自定义异常

  • 用户自己定义异常类,只需继承Exception类即可

 

在程序中使用自定义异常类,大体可分为以下几个步骤:

  1. 创建自定义异常类

  2. 在方法中通过throw关键字抛出异常对象

  3. 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明出通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作

  4. 在出现异常方法的调用者中捕获并处理异常

     

     

    Lambda表达式语法

     

    Java 8中引入了一个新的操作符,“->”可以称之为箭头操作符或者Lambda操作符。当使用Lambda表达式进行代码编写时就需要使用这个操作符。箭头操作符将Lambda表达式分成左右两部分,在操作符的左侧代表着Lambda表达式的参数列表(接口中抽象方法的参数列表),在操作符的右侧代表着Lambda表达式中所需执行的功能(是对抽象方法的具体实现)。Lambda表达式的语法格式如下:

    (parameters) -> expression或(parameters) ->{statements; }

    上述语法还可以写成以下几种格式:

    无参数无返回值:() -> 具体实现

    有一个参数无返回值: (x) -> 具体实现 或 x -> 具体实现

    有多个参数,有返回值,并且Lambda体中有多条语句:(x,y) -> {具体实现}

    若方法体只有一条语句,那么大括号和return都可以省略。

    注意:Lambda表达式的参数列表的参数类型可以省略不写,可以进行类型推断。在Java 8之后可以使用Lambda表达式来表示接口的一个实现,在Java 8之前通常是使用匿名类实现的。

    Ø Lambda表达式案例

    接下来通过代码讲解Lambda表达式的使用,编写一个能够实现加、减、乘、除功能且能够实现输出字符串功能的案例。首先chapter05项目的根目录下创建lambda包,在该包下创建MathOne接口,该接口中定义一个带有两个参数的operation方法,

     

     

  5.  
posted @ 2023-03-01 11:35  william996  阅读(42)  评论(0)    收藏  举报