群碩筆記試験問題1


上海群碩ソフトウェア会社のJava筆記試験問題の原題住所:クリックして要求を表示するのは結果を書くので、そしてなぜかを説明します.回想プログラムによると、
と書く
package org;
public class Test
{
public static void main(String[] args)
{
A a = new B();
a.print();
}
}
class A
{
private int i = 1;
public A()
{
int i = 2;
}
public void print()
{
System.out.println("The result is:"+ i);
}
}
class B extends A
{
private int i = 3;
public B()
{
int i = 6;
}
public void print()
{
System.out.println("The result is:"+ i);
}
}
出力結果は:3この問題は多態である.ここでは親の参照が子のオブジェクトを指す.親の参照は、子と親が共有するメソッドにのみアクセスできます.このプログラムはEclipseとDebugプログラムで実行順序を観察しました.
package org;

public class Test
{

 public static void main(String[] args)
 {
 A a = new B();
 a.print();
 }

}

class A
{
 //3
 private int i = 1;
 //2
 public A()
 {
 //4
 int i = 2;
 }

 public void print()
 {
 System.out.println("The result is:" + i);
 }
}

class B extends A
{
 //5
 private int i = 3;
 //1
 public B()
 {
 //6
 int i = 6;
 }

 public void print()
 {
 System.out.println("The result is:" + i);
 }
}

プログラムを少し変更します.
package org;

public class Test
{

 public static void main(String[] args)
 {
 A a = new B();
 a.print();
 }

}

class A
{
 //3
 private int i = 1;
 //2
 public A()
 {
 //4
 int i = 2;
 }

 public void print()
 {
 System.out.println("The result is:" + i);
 }
}

class B extends A
{
 //5
 private int i = 3;
 //1
 public B()
 {
 //6
 int i = 6;
 }

 public void print2()
 {
 System.out.println("The result is:" + i);
 }
}

このとき出力結果は1となる.親の参照は子固有のメソッドにアクセスできないためです.
 
 
 
 
 
 
からhttp://www.blogjava.net/supercrsky/archive/2007/12/09/166460.html