模拟练习

1.
模拟练习_第1张图片
1> 结果:编译错误
在这里插入图片描述
2> 解析:在调用子类构造器之前,会先调用父类构造器,当子类构造器中没有使用"super(参数或无参数)"指定调用父类构造器时,是默认调用父类的无参构造器,如果父类中包含有参构造器,却没有无参构造器,则在子类构造器中一定要使用“super(参数)”指定调用父类的有参构造器,不然就会报错。

2.
模拟练习_第2张图片
1> 结果:编译错误
2> 解析:base.methodB(); //语句错误
编译时不认对象只认引用,Base类型的引用不能调methodB方法

3.
1>结果
1)虚拟机中没有泛型,只有普通类和普通方法(对)
2)所有泛型类的类型参数在编译时都会被擦除(对)
3)创建泛型对象时请指明类型,让编译器尽早的做参数检查(对)
2>解析:编译期间有范型的概念,运行期间没有 //虚拟机–运行期间
List< T >在运行期间会被擦除的只剩下List

4. 经过强制类型转换以后,变量a、b的值分别是?short a = 128; byte b = (byte)a;
1> 结果:a = 128; b = -128;
2> 解析:byte类型范围 -128 —— 127

5. 子类A继承父类B,A a = new A();则父类B构造函数、父类B静态代码块、父类B非静态代码块、子类A构造函数、子类A静态代码块、子类A非静态代码块执行顺序是?
1> 结果:父类B静态代码块 —》子类A静态代码块 —》父类B非静态代码块 —》父类B构造函数 —》子类A非静态代码块 —》子类A构造函数
2> 解析:先静态后非静态最后构造方法

class CleckB{
    CleckB(){
        System.out.println("CleckB的构造函数");
    }
    static{
        System.out.println("CleckB的静态代码块");
    }
    {
        System.out.println("CleckB的非静态静态代码块");
    }
}
 public class Cleck extends  CleckB{
    Cleck(){
        System.out.println("Cleck的构造函数");
    }
    static{
        System.out.println("Cleck的静态代码块");
    }
    {
        System.out.println("Cleck的非静态静态代码块");
    }
    public static void main(String[] args) {
        Cleck cleck = new Cleck();
    }
}

模拟练习_第3张图片

你可能感兴趣的:(练习)