文件1:InterfaceDemo1.java
它提供了三个方法,三个方法分别是addition subtration和match,每个方法每次会接收两个整型参数
文件2:InterfaceDemo2.java
这里面写了InterfaceDemo1的两个继承类,分别是Mode1和Mode2
在Mode1中,addition表示两个数字的和,subtraction表示两个数字之差,match返回它们的大小比较(1表示大于,0表示等于,-1表示小于)
在Mode2中,addition表示两个数字的与运算,subtraction表示两个数字的或运算,match表示两个数字的异或运算
文件3:GenericDemo1.java
它是泛型方法的两个示例,分别是PrintArray和Max
PrintArray接收一个数组,数组的元素可能是数字、字符或字符串,PrintArray将数组中的内容输出。
Max接收三个数据,数据类型可能是数字、字符或字符串,Max将三者中最大者输出。
另外提醒注意下第2行是<T>,而第20行已经用到了<T extends Comparable<T>>,因为泛型的compareTo方法在Comperable的接口中(啊应该是接口吧hhh,我的理解是Java自带的一个接口)
文件4:GenericDemo2.java
提供了一个父类泛型类Pattern,这里我的原意是“模板”,毕竟是个父类嘛
它有四个泛型子类,分别是IntegerMode、DoubleMode、CharacterMode和StringMode,分别对应不同的数据输入情况。
在Pattern中,我定义三个方法,分别是addition subtration和match,每个方法每次会接收两个参数。接收的两个参数尽管可以是整型、浮点数、字符或字符串,但它们保持类型一致。具体细节就是四个泛型子类。
如果接收的是整数,对应的就是IntegerMode。此时对三个方法进行重写:addition的返回值是它们的和,subtraction的返回值是它们的差,match的返回值是它们的大小比较(如果前面的数大于等于后面的数,返回true;否则返回的是false)
如果接收的是浮点数,对应的就是DoubleMode。此时对三个方法进行重写:addition subtraction match的功能和整型一致
如果接收的是字符,对应的就是CharacterMode。此时对三个方法进行重写:addition的返回值是它们ASCLL码之和所表示的字符,subtraction的返回值是它们ASCLL码之差的绝对值所表示的字符,match判断是否相同(如果两个字符相同,返回true;否则返回的是false)
如果接收的是字符串,对应的就是StringMode。此时对三个方法进行重写:addition的返回值是它们的字符串连接,subtraction的返回值是第一个字符串去掉所有第二个字符串所包含的字符,match判断第二个字符串是否为第一个字符串的子串(如果第二个字符串是第一个字符串的子串,返回true;否则返回的是false)
文件5:AnonymousDemo.java
匿名内部类。
一个父类book,它有三个参数标题、作者和价格,四个方法read、display_title、display_author和display_price。
两个子类DiscreteMathematics(离散数学)和DataStructure(数据结构),子类中对read进行重写,另有一匿名类write,在write内部对display_title、display_author和display_price进行了重写。
文件6:LambdaDemo.java
主函数十分简单,来看几个外部类。
这个文件总共干了三个事情。
第一个事情是内部方法forEachDemo,它展示了lambda和forEach方法的结合。
第二个事情是介绍三位大家熟悉的诗人。
一个接口Poet
在PoetDemo1中,我们先创造了一个类Li_Po,然后再创建一个Li_Po对象poet1,再用Poet1调用Li_Po中的方法。这是我们通常的做法。
PoetDemo2是PoetDemo1的进阶版本。在PoetDemo2中,我们先创造了一个类Li_Ching_chao,然后再创建一个Li_Ching_chao对象poet2,但在这个过程中我们用到了匿名内部类。
PoetDemo3是PoetDemo2的进阶版本。在PoetDemo3中,我们不再创建新类,而是直接调用lambda方法。
第三个事情和前两个事情不同之处一是它带参,二是它有返回值,其他没什么好补充的。
文件7:CollectionDemo.java
关于Collection/Collections的一个小Demo。
文件8:哦下次再写