1.
void是修饰方法的,没有返回值
final是修饰常量的,protected是保护的,static是静态的
2.
(1)父类静态成员和静态初始化块,按在代码中出现的顺序依次执行。
(2)子类静态成员和静态初始化块,按在代码中出现的顺序依次执行。
(3)父类实例成员和实例初始化块,按在代码中出现的顺序依次执行。
(4)执行父类构造方法。
(5)子类实例成员和实例初始化块,按在代码中出现的顺序依次执行。
(6)执行子类构造方法。
我们来debug一下,发现静态初始化块和静态变量是同级别的,谁在前谁先执行。
3.
A选项,Map和Collection是并列的
4.
解释:
5.
方法的重载:
方法重载的定义:同一个类或与他的派生类中,方法名相同,而参数列表不同的方法。其中参数列表不同指的是参数的类型,数量,类型的顺序这三种至少有一种不同。
方法重载与下列无关:
- 与返回值类型无关;与访问修饰符无关
- 构造方法也可以重载
方法的重写:
方法的重写的定义:在继承关系的子类中,定义一个与父类相同的方法
判断是否重写的方式:在方法之前加上@Override
方法重写的特点:
- 在继承关系的子类中重写父类的方法
- 重写的方法必须方法名相同,参数列表也相同
- 重写的方法的返回值类型应该与父类中被重写方法的返回值类型相同或是他的子类类型
- 重写的方法的访问权限应该与父类中被重写方法的访问权限相同或高于它的访问权限
- 重写的方法不能抛出比父类更加宽泛的异常
方法重写的注意事项:
- 构造方法不能被重写,因为构造方法名必须和类名相同
- private修饰的成员方法不能被重写
- static修饰的方法不能被重写
- final修饰的方法不能被重写
- 当子类重写了父类中的方法后,子类对象调用该方法时调用的是子类重写后的方法
6.
解析:
在调用子类构造器之前,会先调用父类构造器,当子类构造器中没有使用"super(参数或无参数)"指定调用父类构造器时,是默认调用父类的无参构造器,如果父类中包含有参构造器,却没有无参构造器,则在子类构造器中一定要使用“super(参数)”指定调用父类的有参构造器,不然就会报错。
7.
解析:
父类静态域——》子类静态域——》父类成员初始化——》父类构造块——》父类构造方法——》子类成员初始化——》子类构造块——》子类构造方法;
代码:
public class test03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
C c = new D();
}
}
class C {
static
{
System.out.println("C 基类静态域 ");
}
{
System.out.println("C 基类对象成员构造函数");
}
public C(){
System.out.println("C 基类本身的构造函数");
}
}
class D extends C{
static
{
System.out.println("D 派生类静态域");
}
{
System.out.println("D 派生类对象成员构造函数");
}
public D(){
System.out.println("D 派生类本身的构造函数");
}
}
控制台输出:
8.
解析: