java实例初始化代码阅读题
目录
(1)阅读如下代码,分析运行结果
public class Test1{
public static void main(String[] args){
Son s1 = new Son();
}
}
class Father{
private int a = getNumber();
{
System.out.println("Father非静态代码块 a = " + a);
}
Father(){
System.out.println("Father()无参构造");
}
public int getNumber(){
System.out.println("Father:getNumber()");
return 1;
}
}
class Son extends Father{
{
System.out.println("Son非静态代码");
}
public Son(){
System.out.println("Son():无参构造");
}
public int getNumber(){
System.out.println("Son:getNumber()");
return 2;
}
}
(2)阅读如下代码,分析运行结果
public class Test2 {
public static void main(String[] args) {
Sub s = new Sub();
}
}
class Base{
Base(){
this.method(100);
}
{
System.out.println("base");
}
public void method(int i){
System.out.println("base : " + i);
}
}
class Sub extends Base{
Sub(){
super.method(70);
}
{
System.out.println("sub");
}
public void method(int j){
System.out.println("sub : " + j);
}
}
(3)阅读如下代码
如下代码是否可以编译通过,如果能,结果是什么,如果不能,为什么?
public class Person{
public Person(){
System.out.println("this is a Person.");
}
}
public class Teacher extends Person{
private String name = "tom";
public Teacher(){
System.out.println("this is a teacher.");
super();//编译报错,因为super()只能出现在构造器的首行
}
public static void main(String[] args){
Teacher tea = new Teacher();
System.out.println(this.name);
}
}