day07 方法重写&super、this、static关键字&JVM的类加载顺序题目
阅读原文时间:2023年07月08日阅读:1

day07

方法重写

1)重写发生在子父类当中

2)方法名、参数列表、返回值均相同

3)重写的方法,方法体或者访问控制修饰符不同

4)子类方法的访问权限不能缩小,比如父类是int,子类重写权限不能是byte

重写和重载的区别、重写重载的特点

都是把重写重载特点都写出来

如果子类重写了父类的方法,在调用时会调用已重写的方法

super关键字特点

1)用在子类的构造方法中

2)不论写不写super(),java都会默认使用super()调用父类的构造方法

3)只能通过super()调用父类的构造方法一次

4)通过super()调用父类的构造方法,必须放在子类构造方法的第一行

this表示当前类对象

super表示当前类的父类对象

在子类构造方法,不论写不写super(),Java都会默认使用super()调用父类的构造方法

super();调用父类构造方法

super.方法名();//调用父类成员方法

创建一个子类对象的加载顺序

1)创建一个父类对象-后创建子类对象

2)先父类构造方法,后子类构造方法

public Father(){
    //super();//表示调用父类的构造方法
    this("zs");//调用类另一个有参构造
}
public Son(String name){

}

static关键字

静态、全局的

被修饰的方法或变量可以通过类名调用,不需要实例化

static关键字特点

1)被static声明的资源只能被初始化一次,在整个程序编译通过之后,运行之前进行初始化

2)被 static修饰的变量叫静态变量,static不能修饰局部变量(如方法中变量),因为本身static就有全局的意思

3)修饰方法,称为静态方法,静态方法只能调用静态资源,不能调用非静态变量,不能应用this和super,因为静态资源的加载先于实例化

4)被static修饰的变量和方法独立于该类的任何对象。也就是说,她不依赖于特定的对象,被该类的所有对象共享(可以被共同访问到)

5)修饰内部类(静态类),外部类不需要实例化,可以直接通过外部类名调用

特点:

run as》加载静态资源》开始执行第一行代码

1)static声明的资源只能被初始化一次,且在整个编译通过之后,开始运行之前完成初始化

//同类声明方法,可以直接 方法名()进行调用,不同类用 类名.方法名()进行调用
//被static修饰的变量称为静态变量 static String name;可以在同类方法中直接使用
static String name;
main方法内
    name = "123";
其他子父类:
    类名.name = "123";
//static声明代码块叫静态代码块
JVM的类加载顺序
静态资源》new》代码块》构造方法
    先在内存分配资源后构造方法初始化

/**

代码块

构造方法

代码块

构造方法

静态代码块

代码块

构造方法

*/

静态资源取出单独加载=》

1.b1,加载的是该类的对象,所以把该类中除静态资源外的资源加载一遍//运行代码块和构造方法

2.加载b2与b1同理//代码块和构造方法

3.加载静态代码块

4.加载main方法中的bus对象,同b1b2一致//代码块和构造方法

JVM的类加载顺序

静态资源》new》代码块》构造方法

先在内存分配资源后构造方法初始化