JAVA09-Http协议与爬虫

HTTP 定义了一组请求方法,以表明要对给定资源执行的操作。指示针对给定资源要执行的期望动作,虽然他们也可以是名词, 但这些请求方法有时被称为HTTP动词。每一个请求方法都实现了不同的语义,但一些共同的特征由一组共享:例如一个请求方法可以是 safe, idempotent, 或cacheable (en-US)。

参考资料:https://developer.mozilla.org/zh-CN/docs/Web/HTTP

JAVA08-Maven与集合

Maven 是一个基于项目对象模型(POM,Project Object Model)的项目管理工具,主要用于 Java 项目的构建、依赖管理和项目信息管理。它简化了项目的构建过程,提供了一种标准化的方式来管理项目的构建、报告和文档。

JAVA07-内部类和Fork

什么是内部类

  1. 内部类提供了更精细的封装
  2. 内部类是和外部类的实例相绑定的

它可以调用外部类的实例方法,包括被private修饰的方法或成员 内部类之所以能访问外部类的成员,是因为编译器帮你的内部类注入了一个this$0的外部类实例成员

  1. 外部类也可以调用内部类中被private修饰的方法或成员变量
  2. 内部类不一定非要定义在类中,也可以定义在接口,枚举中

JAVA06-接口(Interface)

在Java中,接口(Interface)是一种引用类型,类似于类,但只能包含抽象方法、默认方法、静态方法、常量和嵌套类型。接口的主要作用是定义一组方法规范,供类实现,从而实现多重继承的效果。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// A 接口
public interface AInterface {
    void sayHello();
}

// B 接口
public interface BInterface {
    void sayHello();
}

public class Main implements AInterface, BInterface {
    /**
     * 实现了sayHello方法
     * 因为实现只有一份,因此避免了C++中多重继承带来的问题
     */
    @Override
    public void sayHello() {
        System.out.println("Hello World");
    }

    public static void main(String[] args) {
        new Main().sayHello(); // 调用sayHello方法
    }
}

JAVA05-多态和策略模式

Java中的多态,多态时面向对象的灵魂,是最重要的特性

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class Main {
    public class Base {
        public void sayHello() {
            System.out.println("Hello");
        }
    }

    public class Sub extends Base {
        @Override
        public void sayHello() {
            System.out.println("你好");
        }
    }

    public static void main(String[] args) {
        /*
        虽然你用的是父类类型变量,但它实际是子类类型的对象
        因此this等于Sub类型的对象,因此实际调用的是sub对象的sayHello方法
        这就是面向对象的多态性
               
        几个例子,例如HashSet.addAll方法,由于HashSet本身并没有addAll方法
        因此它调用的是它父类的addAll方法,在父类的addAll方法中,又调用了add(这一点
        可以跟踪HashSet源码看到),那么到这里你肯定会觉得它调用的是父类自己的add方法,
        但其实调用的是HashSet的add方法,因为this是HashSet
              
        还比如你可能经常见到这种用法:
          List list = new ArrayList(); 这些都是用到了多态的特性
        */
        Base base = new Sub();
        base.sayHello();
    }
}