首页 > 编程语言 >Java面向对象部分重点笔记(二)

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

时间:2023-03-01 11:44:43浏览次数:40  
标签:Java 方法 接口 面向对象 笔记 抽象类 异常 表达式 Lambda

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.  

标签:Java,方法,接口,面向对象,笔记,抽象类,异常,表达式,Lambda
From: https://www.cnblogs.com/msk996/p/17167590.html

相关文章

  • Java反射入门
    1.概述反射就是在运行状态,对于任意一个类,都可以直达这个类的属性和方法;对于任何一个对象,都可以调用它的任意一个方法和属性。而对于官方的解释是,反射允许对封装类的字段、......
  • java反射机制
    JAVA反射机制-----copy自p牛的java安全漫谈反射是⼤多数语⾔⾥都必不可少的组成部分,对象可以通过反射获取他的类,类可以通过反射拿到所有⽅法(包括私有),拿到的⽅法可以调⽤,......
  • [Java] 1.类和对象
    类和对象Class:类是对一类具有相同属性的事物的抽象。可以理解为类只是一张设计图。Object:对象是对类的实例化,就是按照类图纸,制造出来可操作的实体。类的定义class......
  • [Java] 2.封装
    封装封装就是要程序员学会正确设计类对象的属性和方法,举个例题:请对“人在加油站加200块汽油”进行面向对象设计。显然我们可以得到两个类人:classPerson{}加油......
  • Score-CAM: Score-Weighted Visual Explanations for Convolutional Neural Networks
    摘要作者提出了一种不依赖梯度的类激活图生成方法Score-CAM,其通过前向传播获取每一个激活图的权重。实验证明Score-CAM能在解释决策过程方面实现更好的视觉性能和公平性。......
  • Java导出word文档
    首先上测试代码,用的SpringMVC。/***测试导出word文档**@paramrequest*@return*@throwsCustomException*@authoryuanjin......
  • 33 个重要的 JavaScript 概念
    33个重要的JavaScript概念原创2022-12-2418:21·程序媛最幽默 了解这33个JavaScript概念绝对会让你将来的职业生涯受益无穷。话不多说,直接进入主题!1.调用栈......
  • 分享 29个超有用的 JavaScript 单行代码(下)
    分享29个超有用的JavaScript单行代码(下)原创2023-02-0321:19·前端达人大家好,在上一篇文章《分享29个超有用的JavaScript单行代码(上)》分享了日期、字符串、数字、数......
  • 分享29个超有用的 JavaScript 单行代码(上)
    分享29个超有用的JavaScript单行代码(上)原创2023-02-0320:13·前端达人在这篇文章中,我列出了一系列29个JavaScript单行代码,它们在使用原生JS(≥ES6)进行开发时非常......
  • (笔记)EtherCat报文格式详解
     说明:本文是从EtherCat初学者的角度来撰写的,详细介绍的其报文格式,特别是应用层与Canopen之间的关系。特别感谢:https://zhuanlan.zhihu.com/p/406428272?utm_id=0的贡献。......