[Java] 作业8(继承、多态)

Q19

C 错误。在 main() 中只能直接调用静态方法或者访问静态域,而 this 和 super() 都是非静态的:

public class Test {
  public static void main(String[] args) {
    // Pass
    System.out.println("Static field 'a' = " + a);
    
    // Pass
    foo();

    // Error: this is a compilation error.
    this.bar();
  }
  
  static void foo() {
    System.out.println("Static method.");
  }
  
  void bar() {
    System.out.println("Non static method.");
  }
  
  static int a = 10;
}



Q37

题目定义了两个 public class, 所以如果要完全模拟题目的情景,需要创建两个 .java 文件。因为每个 .java 文件里有且只能有一个 public clas. 

// Parent.java
public class Parent {
  public float aFun(float a, float b) throws IOException {
    // ...
  }
}

// Child.java
public class Child extends Parent {
  // The following method definition will cause compilation error due to
  // reducing the visibility of aFun(float, float)
  float aFun(float a, float b) { }
}
方法的可见性级别(访问权限)分为:

    - public

    - protected

    - 默认级别,什么都不用写

    - private
在 Java 中,子类继承父类时不能降低父类方法的可见性。

在此,Child 的 aFun 方法是默认级别的,可见性比 public 低,所以会造成编译错误(compilation error).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值