java面试经典题目

1

public class Test1 {
  public static void main(String[] args) {
    int i = 1;
    i = i++;
    int j = i++;
    int k = i + ++i * i++;
    System.out.println("i=" + i);
    System.out.println("j=" + j);
    System.out.println("k=" + k);
  }
}

 输出结果:

2

public class Father {
  private int i = test();
  private static int j = method();

  static {
    System.out.print("(1)");
  }

  Father() {
    System.out.print("(2)");
  }

  {
    System.out.print("(3)");
  }

  public int test() {
    System.out.print("(4)");
    return 1;
  }

  public static int method() {
    System.out.print("(5)");
    return 1;
  }
}

public class Son extends Father {
  private int i = test();
  private static int j = method();

  static {
    System.out.print("(6)");
  }

  Son() {
    System.out.print("(7)");
  }

  {
    System.out.print("(8)");
  }

  public int test() {
    System.out.print("(9)");
    return 1;
  }

  public static int method() {
    System.out.print("(10)");
    return 1;
  }

  public static void main(String[] args) {
    Son s1 = new Son();
    System.out.println();
    Son s2 = new Son();
  }
}

输出结果:

3 局部变量与成员变量的区别 

方法的重写规则

  • 参数列表必须完全与被重写方法的相同。

  • 返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类(java5 及更早版本返回类型要一样,java7 及更高版本可以不同)。

  • 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected。

  • 父类的成员方法只能被它的子类重写。

  • 声明为 final 的方法不能被重写。

  • 声明为 static 的方法不能被重写,但是能够被再次声明。

  • 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为 private 和 final 的方法。

  • 子类和父类不在同一个包中,那么子类只能够重写父类的声明为 public 和 protected 的非 final 方法。

  • 重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。

  • 构造方法不能被重写。

  • 如果不能继承一个方法,则不能重写这个方法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值