this

image.png

调用属性和方法

image.png
image.png

调用本类的构造器

image.png
image.png


package

image.png
image.png

JDK中主要的包介绍

image.png


import

image.png
image.png


super

image.png

通常情况下习惯省略“super”,特殊情况⬆️ 见注意第一条。

调用父类构造器

image.png


static

无论产生了多少对象,某些特定的数据在内存空间中只有一份。随着类的加载而加载。

使用范围

属性、方法、代码块、内部类。
image.png

修饰属性

  • 静态变量(static修饰):我们创建了类的多个对象,多个对象共享同一个静态变量。当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时,是修改过了的。

  • 实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性。当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性值的修改。

    1. 静态变量随着类的加载而加载。可以通过”类.静态变量”的方式进行调用。
    2. 静态变量的加载要早于对象的创建。
    3. 由于类只会加载一次,则静态变量在内存中也只会存在一份:存在方法区的静态域中。
    4. 静态属性举例:System.out; Math.PI;

image.png

修饰方法

  • 静态方法(static修饰)只能调用静态的方法或属性
  • 非静态方法:既可以调用非静态的方法或属性,也可以调用静态的方法或属性。

    静态方法不能使用this关键字、super关键字,不能被重写(从生命周期的角度去理解)。


final

image.png


abstract

image.png
image.png

  • 抽象类的匿名子类 ```java public class PersonTest {

    public static void main(String[] args) {

    1. method(new Student());//匿名对象
    2. Worker worker = new Worker();
    3. method1(worker);//非匿名的类非匿名的对象
    4. method1(new Worker());//非匿名的类匿名的对象
    5. System.out.println("********************");
    6. //创建了一匿名子类的对象:p
    7. Person p = new Person(){
    8. @Override
    9. public void eat() {
    10. System.out.println("吃东西");
    11. }
    12. @Override
    13. public void breath() {
    14. System.out.println("好好呼吸");
    15. }
    16. };
    17. method1(p);
    18. System.out.println("********************");
    19. //创建匿名子类的匿名对象
    20. method1(new Person(){
    21. @Override
    22. public void eat() {
    23. System.out.println("吃好吃东西");
    24. }
    25. @Override
    26. public void breath() {
    27. System.out.println("好好呼吸新鲜空气");
    28. }
    29. });

    }

public static void method1(Person p){
    p.eat();
    p.breath();
}

public static void method(Student s){

}

}

class Worker extends Person{

@Override
public void eat() {
}

@Override
public void breath() {
}

}


---

<a name="KF1Yt"></a>
## interface
![image.png](https://cdn.nlark.com/yuque/0/2022/png/1534487/1648782868385-7b80019b-6bd1-463c-8ab2-c67c7599c40c.png#clientId=u930ab843-0051-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=254&id=u1f7a6786&margin=%5Bobject%20Object%5D&name=image.png&originHeight=750&originWidth=1674&originalType=binary&ratio=1&rotation=0&showTitle=false&size=398353&status=done&style=none&taskId=u6d591ec2-b37b-4550-b2de-1944aa7cd20&title=&width=567.4000244140625)<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/1534487/1648806782383-80e4e7b7-edd4-4d9a-83ee-09c5ad8a764e.png#clientId=uf3ea4880-00b6-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=300&id=ud70b3fb1&margin=%5Bobject%20Object%5D&name=image.png&originHeight=930&originWidth=1760&originalType=binary&ratio=1&rotation=0&showTitle=false&size=266085&status=done&style=none&taskId=ub7bd2b5a-5084-4925-b3b8-dd6911e816e&title=&width=567)<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/1534487/1648806918885-1c25c627-1a72-489e-a683-d7abc6d7f37c.png#clientId=uf3ea4880-00b6-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=261&id=u05f9bb31&margin=%5Bobject%20Object%5D&name=image.png&originHeight=818&originWidth=1656&originalType=binary&ratio=1&rotation=0&showTitle=false&size=279588&status=done&style=none&taskId=u853a371e-4f37-4524-89c3-a4479352712&title=&width=528)
<a name="GX7ZX"></a>
### 接口和抽象类对比
![image.png](https://cdn.nlark.com/yuque/0/2022/png/1534487/1648808070452-e80cafef-e8bc-495b-948d-4db2c16aa06a.png#clientId=ua6cf7a45-b2cd-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=300&id=u554c6b25&margin=%5Bobject%20Object%5D&name=image.png&originHeight=768&originWidth=1656&originalType=binary&ratio=1&rotation=0&showTitle=false&size=257003&status=done&style=none&taskId=uf7bfa311-a3fb-46e0-b95e-8dd837a1a64&title=&width=647)
```java
Computer com = new Computer();
//1.创建了接口的非匿名实现类的非匿名对象
Flash flash = new Flash();
com.transferData(flash);

//2. 创建了接口的非匿名实现类的匿名对象
com.transferData(new Printer());

//3. 创建了接口的匿名实现类的非匿名对象
USB phone = new USB(){

    @Override
    public void start() {
        System.out.println("手机开始工作");
    }

    @Override
    public void stop() {
        System.out.println("手机结束工作");
    }

};
com.transferData(phone);


//4. 创建了接口的匿名实现类的匿名对象

com.transferData(new USB(){
    @Override
    public void start() {
        System.out.println("mp3开始工作");
    }

    @Override
    public void stop() {
        System.out.println("mp3结束工作");
    }
});

Java 8中接口的新特性

image.png

public interface AA {
    double PI = 3.14;

    public default void method() {
        System.out.println("北京");
    }

    default String method1() {
        return "上海";
    }

    public static void method2() {
        System.out.println(“hello lambda !");
    }
}

image.png