Week 4.3 | Lecture 11 | ADT、抽象类 | CS61B-Spring-2018

本文介绍了Java中的抽象数据类型ADT,强调了ADT的定义和理解关键点,并探讨了Java内置库中的ADT如List、Set和Map。此外,文章讨论了Java的优点,包括静态类型和接口继承等特性。接着,详细阐述了接口和抽象类的区别,如接口的全公开方法和抽象类的灵活性。最后,提到了包在组织Java代码中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 抽象数据类型ADT

抽象数据类型( ADT,Abstract Data Type)是指一个数据结构的数学模型以及定义在此数学模型上的一组操作。

抽象数据类型是描述数据结构的一种理论工具,其目的是使人们能够独立于程序的实现细节来理解数据结构的特性。抽象数据类型的定义取决于它的一组逻辑特性,而与计算机内部如何表示无关。

要理解一种ADT,需要理解它的三方面:数据对象如何定义、数据对象之间的关系如何定义、对数据对象的操作如何定义。

2. Java Libraries

Java具有某些可以使用的内置ADT。这些都打包在Java库中。
java.util库中包含三个最重要的ADT:
在这里插入图片描述
(白色是接口,蓝色是具体类)

  • List:items的有序集合。流行的实现是ArrayList
    eg.List<String> words = new ArrayList<>();
    ArrayList是List的子类;List是接口不能被实例化,而 ArrayList可以。这句话也可以理解成,我想要一个list,不管是啥都行,在new的时候我指定用ArrayList来实现。

    • List的具体使用:
      导包:import java.util.List; import java.util.ArrayList;
      List的常用方法有:addLast(), size()…
  • Set:集合中的items是无序且无重复的。流行的实现是HashSet
    eg. Set<String> ss = new HashSet<>();

    • Set的具体使用:
      导包:import java.util.Set; import java.util.HashSet;
      List的常用方法有:add(), contains()…
  • Map:键/值对的集合。您可以通过键访问该值。
    流行的实现是HashMap
    eg.Map<String, Integer> counts = new HashMap<String, Integer>();

3. Java的优点

没太看懂,先复制过来了

  • 由于具有以下功能,可以减少编写程序的时间:
    • 静态类型(提供类型检查并帮助指导程序员)。
    • 接口继承提供了更清晰的多态性。
    • 访问控制修饰符(可能指的是private吧)使abstraction barrier(?)更加牢固。
  • 由于具有以下功能,代码效率更高:
    • 能够更好地控制engineering tradeoff(?)。
    • single valued arrays(?)可带来更好的性能。
  • 基本数据结构更类似于基础硬件:
    用Python做ArrayDeque很奇怪,因为不需要调整数组大小。但是,在硬件中,不存在可变长度的数组。

4. 抽象类与接口

(1)接口的特性

  • 所有方法都必须public。
  • 所有变量必须是public static final(即常量)。
  • 无法实例化
  • 默认情况下,所有方法都是抽象的(不写实现内容),除非指定为 default。(指定为default则可以写实现内容)
  • 每个类可以implements多个接口。

在这里插入图片描述

(2)抽象类的特性

  • 方法可以是public或private
  • 可以有任何类型的变量
  • 无法实例化
  • 默认情况下,方法是具体的(需要写实现内容),除非指定为 abstract(不写实现内容)
  • 每个类只能extends一个抽象类

在这里插入图片描述

注意:
抽象类不一定要实现所继承的接口中的方法,甚至不一定要列出来,相当于抽象类默认继承了接口中的抽象方法。

5. Packages

包名称为所有内容提供了唯一名称。
使用import导入包,就可以使用其中的类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值