java基础刷题笔记3
Java刷题笔记3
T1 子类与父类实例化时的执行顺序
执行顺序:
父类静态代码块 ->子类静态代码块 ->父类非静态代码块 -> 父类构造函数 -> 子类非静态代码块 -> 子类构造函数。
案例代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25public class Father {
static{
System.out.println("父类静态代码块");
}
{
System.out.println("父类非静态代码块");
}
public Father(){
System.out.println("父类构造函数");
}
}
public class Son extends Father{
static{
System.out.println("子类静态代码块");
}
{
System.out.println("子类非静态代码块");
}
public Son(){
System.out.println("子类构造函数");
}
public static void main(String[] args) {
Son son = new Son();
}
}
结果为: 父类静态代码块
子类静态代码块
父类非静态代码块
父类构造函数
子类非静态代码块
子类构造函数
T2 内部类
知识总结:
1.静态内部类才可以声明静态方法2.静态方法不可以使用非静态变量
3.抽象方法不可以有函数体
T3 静态方法的调用
在java中静态方法中不能使用非静态方法和非静态变量。但非静态方法中可以使用静态变量
在本题中,main方法显然是静态方法
T4 开发中使用泛型的作用
泛型仅仅是java的语法糖,它不会影响java虚拟机生成的汇编代码,在编译阶段,虚拟机就会把泛型的类型擦除,还原成没有泛型的代码,顶多编译速度稍微慢一些,执行速度是完全没有什么区别的
T5 Java多态调用
java多态有两种情况:重载和覆写 在覆写中,运用的是动态单分配,是根据new的类型确定对象,从而确定调用的方法; 在重载中,运用的是静态多分派,即根据静态类型确定对象,因此不是根据new的类型确定调用的方法
T6 接口中成员变量的默认等价类型
接口中的变量默认是public static final 的,方法默认是public abstract 的