CS61B学习笔记(八)-Rd4.2-Extends.Casting,HigherOrderFunction
幻灯片:cs61b 2021 lec9 inheritance2 - Google 幻灯片
Reading:4.2 Extends, Casting, Higher Order Functions · Hug61B (gitbooks.io)
Extends关键字现在,您已经了解了如何使用 implements 关键字来定义与接口的层次结构关系。如果我们想定义类之间的层次结构关系怎么办?
implements 关键字:定义类与接口的层次结构关系
extends关键字:定义类之间的层次结构关系
通过使用 extends 关键字,子类继承父类的所有成员。 “成员”包括:
所有实例变量和静态变量
所有方法
所有嵌套类
请注意,构造函数不是继承的,子类不能直接访问私有成员。
12345678910111213141516171819202122/** 请注意,当有人调用 removeLast SLList 时,它会丢弃该值 - 再也看不到了。但是,如果那些被移除的价值观离开并开始对我们进行大规模的反抗呢?在这种情况下,我们需要记住那些被删除的(或者更确切地说是有缺陷的>:()值是 ...
CS61B学习笔记(七)-Rd4.1-导言和接口
4.1 Intro and interfaces · Hug61B (gitbooks.io)
方法重载(method overloading)12public static String longest(SLList<String> list)public static String longest(AList<String> list)
这就是所谓的方法重载。当您调用 WordUtils.longest 时,Java 会根据您提供的参数类型知道要运行哪一个。如果为其提供 AList,它将调用 AList 方法。与 SLList 相同。
Java 足够聪明,知道如何为不同类型的两种相同的方法处理,这很好,但重载有几个缺点:
这是超级重复和丑陋的,因为你现在有两个几乎相同的代码块。
它需要更多的代码来维护,这意味着如果你想对方法进行一些小的更改,例如更正一个错误,你需要在 longest 方法中为每种类型的列表进行更改。
如果我们想创建更多的列表类型,我们必须为每个新的列表类复制该方法。
上位词、下位词和接口继承Hypernyms, Hyponyms, a ...
CS61B项目练习笔记(三)-Proj1
The Deque APIDeque(通常发音为“deck”)是双端队列的不规则首字母缩写。双端队列是具有动态大小的序列容器,可以在两端(其前端或后端)扩展或收缩。
具体而言,任何 deque 实现都必须具有以下操作:
public void addFirst(T item) :将某个类型的 T 项目添加到 deque 的前面。你可以假设这 item 从来都不是 null .
public void addLast(T item) :将类型的 T 项目添加到 deque 的背面。你可以假设这 item 从来都不是 null .
public boolean isEmpty() :如果 deque 为空,则返回, false 否则返回 true 。
public int size() :返回 deque 中的项数。
public void printDeque() :从头到尾打印 deque 中的项目,用空格分隔。打印完所有项目后,打印出新行。
public T removeFirst() :删除并返回 deque 前面的项目。如果不存在此类项,则返回 null 。
public T ...
中国矿业大学寒招介绍
学校基本介绍
美照
广东省分数线介绍
粗略版
招生专业类
23-计划数
23-平均分
23-平均位次
22-计划数
22-平均分
22-平均位次
21-计划数
21-平均分
21-平均位次
人工智能
6
608
21079
大数据管理与应用
2
607
21726
机器人工程
3
607
21726
2
599
22073
遥感科学与技术
4
606
22388
4
595
26470
计算机类
15
613
18163
15
604
18725
15
605
19989
电子信息类
12
609
20482
12
600
21339
12
598
24417
机械类
12
605
23074
10
598
22774
12
595
26470
安全科学与工程类
4
605
23074
5
596
25799
土木类
7
596
25799
4
596
25799
7
596
25799
建筑类
3
603
24424
2
599
23750
2
599
23750
...
CS61B项目练习笔记(二)--Lab3
经验点:
Stopwatch的使用
在类的两个实现之间执行比较测试。
随机调用类内部的方法。
在类的两个实现之间执行随机比较测试。
使用 IntelliJ 中的恢复按钮。
向断点添加条件。
创建异常断点。
Stopwatch库的使用123456789101112131415161718192021222324252627package timingtest;import edu.princeton.cs.algs4.Stopwatch;/** * Created by hug. */public class StopwatchDemo { /** Computes the nth Fibonacci number using a slow naive recursive strategy.*/ private static int fib(int n) { if (n < 0) { return 0; } if (n == 1) { ...
CS61B学习笔记(六)-数组基础的列表(2.4,2.5)
2.4 Arrays · Hug61B (gitbooks.io)
2.5 The AList · Hug61B (gitbooks.io)
数组数组基础数组是一种特殊类型的对象,它由一系列编号的内存盒组成。这与类实例不同,类实例具有命名的内存盒。为了得到数组的第i个元素,我们使用了在HW 0和Project 0中看到的括号表示法,例如 A[i] 得到A的第 i 个元素。
数组包括:
一个固定的整数长度N
一个由N个存储器盒组成的序列(N =长度),其中所有盒都是相同类型的,编号为0到N - 1。
和类不同,数组没有方法
数组创建
x = new int[3];
y = new int[]{1, 2, 3, 4, 5};
int[] z = {9, 10, 11, 12, 13};
所有这三种表达法都创建了一个数组。
第一种表示法,用于创建 x ,将创建一个指定长度的数组,并使用默认值填充每个内存框。在本例中,它将创建一个长度为3的数组,并使用默认值 int 0 填充3个框中的每一个。
第二种表示法,用于创建 y ,创建一个数 ...
CS61B学习笔记(五)--链表基础的列表(2.2,2.3)
2.2 SLList ·拥抱61B — 2.2 The SLList · Hug61B (gitbooks.io)
2.3 DLList ·拥抱61B — 2.3 The DLList · Hug61B (gitbooks.io)
SLLists在第 2.1 章中,我们构建了类 IntList ,这是一个列表数据结构,从技术上讲,它可以完成列表可以执行的所有操作。然而,在实践中,它 IntList 使用起来相当笨拙,导致代码难以阅读和维护。
从根本上说,问题在于 IntList 这就是我所说的裸递归数据结构。为了正确使用递归,程序员必须理解和利用递归,即使是简单的列表相关任务。这限制了它对新手程序员的有用性,并可能引入一类全新的棘手错误,程序员可能会遇到这些错误,具体取决于该 IntList 类提供的帮助程序方法类型。
初级版本:12345678910111213141516171819202122232425262728293031323334353637public class SLList { public class IntNode { ...
CS61B学习笔记(四)--Reading2.1-列表-海象之谜
什么是海象之谜?尝试预测当我们运行下面的代码时会发生什么。更改为 b 会影响 a 吗,更改为 x 会影响 y 吗?提示:如果你来自 Python,Java 也有相同的行为。
12345678910111213141516171819202122232425262728293031public class PollQuestions { public static void main(String[] args) { Walrus a = new Walrus(1000, 8.3); Walrus b; b = a; b.weight = 5; System.out.println(a); System.out.println(b); int x = 5; int y; y = x; x = 2; System.out.println("x is: " + x); System ...