原题地址:点击查看
要求是写出结果,并说明为什么。
据回忆程序是这样的:
此题考查的是多态.
在这里是父类的引用指向子类的对象.
父类的引用只能访问子类和父类共有的
方法.
这个程序我通过Eclipse和Debug程序观察它的
执行顺序是这样的:
现在将程序稍微改动一下:
这时输出结果就是1了.
因为父类的引用无法访问子类独有的方法.
要求是写出结果,并说明为什么。
据回忆程序是这样的:
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
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);
}
}
此题考查的是多态.
在这里是父类的引用指向子类的对象.
父类的引用只能访问子类和父类共有的
方法.
这个程序我通过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);
}
}
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);
}
}
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了.
因为父类的引用无法访问子类独有的方法.