面试题 1 看代码说结果
class Student {
static {
System.out.println("Student 静态代码块");
}
{
System.out.println("Student 构造代码块");
}
public Student() {
System.out.println("Student 构造方法");
}
}
class Demo2_Student {
static {
System.out.println("Demo2_Student静态代码块");
}
public static void main(String[] args) {
System.out.println("我是main方法");
Student s1 = new Student();
Student s2 = new Student();
}
}
输出结果:Demo2_Student静态代码块
我是main方法
Student 静态代码块
Student 构造代码块
Student 构造方法
Student 构造代码块
Student 构造方法
面试题 2 、Overload和Override的区别是什么?方法重载能改变返回值类型吗?
方法重写(Override):继承关系中,子类出现和父类一模一样的方法时称为方法重写。与返回值类型有关,返回值是完全一致的 (或者是子父类关系)。
方法重载(Overload):本类中出现方法名相同,参数列表不同(参数个数不同,或者对应的参数类型的顺序不同)的方法称为 方法重载。与返回值类型无关。
方法重载可以改变返回值类型。
面试题 3 一个抽象类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
可以; 这么做目的只有一个,就是不让其他类创建本类对象,交给子类完成
面试题 4 abstract不能和哪些关键字共存?
abstract和static不能共存:被abstract修饰的方法没有方法体
被static修饰的可以用类名.调用,但是类名.调用抽象方法是没有意义的
abstract和final不能共存: 被abstract修饰的方法强制子类重写
被final修饰的不让子类重写,所以他俩是矛盾
abstract和private不能共存: 被abstract修饰的是为了让子类看到并强制重写
被private修饰不让子类访问,所以他俩是矛盾的
面试题 5 package,import,class有没有顺序关系(面试题)
有,package必须放在类文件中的第一行,然后是import,之后是class。
|
|