class A {    // スーパークラスA
  void m() { // 非finalなメソッド
    System.out.println( "non-final method" );
  }
  
  final void f() { // finalなメソッド
    System.out.println( "final method" );
  }
}

class B extends A { // サブクラスB
  void m() { // 非finalなメソッド
    System.out.println( "NON-FINAL METHOD" );
  }
  
  // finalメソッドをオーバライドしようとするとエラーになる
  final void f() { // finalなメソッド
    System.out.prinln( "FINAL METHOD" );
  }
}

class FinalMethod {
  public static void main( String args[] ) {
    A a = new B();
    a.m(); a.f();
  }
}