从一道SCJP 试题来看你对继承和多态的理解程度? (转csdn)
2004-12-16 10:25
811 查看
What is displayed when the following is executed?
class Parent{
private void method1(){
System.out.println("Parent's method1()");
}
public void method2()
{
System.out.println("Parent's method2()");
method1();
}
}
class Child extends Parent{
public void method1(){
System.out.println("Child's method1()");
}
public static void main(String args[]){
Parent p = new Child();
p.method2();
}
}
Choices:
a. Compile time error
b. Run time error
c. prints : Parent's method2()
Parent's method1()
d. prints : Parent's method2()
Child's method1()
答案是C
但是我们把题改一下,
class Parent{
private void method1(){
System.out.println("Parent's method1()");
}
public void method2()
{
System.out.println("Parent's method2()");
method1();
}
}
class Child extends Parent{
public void method1(){
System.out.println("Child's method1()");
}
public static void main(String args[]){
Child p = new Child();//改变了这里
p.method2();
}
}
应该选什么? 也是C!
我们再改一下:
class Parent{
public void method1(){ //change here
System.out.println("Parent's method1()");
}
public void method2()
{
System.out.println("Parent's method2()");
method1();
}
}
class Child extends Parent{
public void method1(){
System.out.println("Child's method1()");
}
public static void main(String args[]){
Parent p = new Child();
p.method2();
}
}
这次终于是答案D了,我们再改
:
class Parent{
public void method1(){ //change here
System.out.println("Parent's method1()");
}
public void method2()
{
System.out.println("Parent's method2()");
method1();
}
}
class Child extends Parent{
public void method1(){
System.out.println("Child's method1()");
}
public static void main(String args[]){
Child p = new Child();//change here
p.method2();
}
}
也是答案D,我这里是运行过的结果,可是不理解为什么,那个高手跳出来解释一下?
参考贴:
http://community.csdn.net/Expert/topic/3490/3490386.xml?temp=.3488581
class Parent{
private void method1(){
System.out.println("Parent's method1()");
}
public void method2()
{
System.out.println("Parent's method2()");
method1();
}
}
class Child extends Parent{
public void method1(){
System.out.println("Child's method1()");
}
public static void main(String args[]){
Parent p = new Child();
p.method2();
}
}
Choices:
a. Compile time error
b. Run time error
c. prints : Parent's method2()
Parent's method1()
d. prints : Parent's method2()
Child's method1()
答案是C
但是我们把题改一下,
class Parent{
private void method1(){
System.out.println("Parent's method1()");
}
public void method2()
{
System.out.println("Parent's method2()");
method1();
}
}
class Child extends Parent{
public void method1(){
System.out.println("Child's method1()");
}
public static void main(String args[]){
Child p = new Child();//改变了这里
p.method2();
}
}
应该选什么? 也是C!
我们再改一下:
class Parent{
public void method1(){ //change here
System.out.println("Parent's method1()");
}
public void method2()
{
System.out.println("Parent's method2()");
method1();
}
}
class Child extends Parent{
public void method1(){
System.out.println("Child's method1()");
}
public static void main(String args[]){
Parent p = new Child();
p.method2();
}
}
这次终于是答案D了,我们再改
:
class Parent{
public void method1(){ //change here
System.out.println("Parent's method1()");
}
public void method2()
{
System.out.println("Parent's method2()");
method1();
}
}
class Child extends Parent{
public void method1(){
System.out.println("Child's method1()");
}
public static void main(String args[]){
Child p = new Child();//change here
p.method2();
}
}
也是答案D,我这里是运行过的结果,可是不理解为什么,那个高手跳出来解释一下?
参考贴:
http://community.csdn.net/Expert/topic/3490/3490386.xml?temp=.3488581
相关文章推荐
- 深入理解Java面向对象三大特性 封装 继承 多态
- 从C语言的角度出发理解C++的封装继承和多态
- 面试:对封装、继承、多态的理解。
- 如何理解封装、继承和多态
- 对封装、继承、多态、抽象的理解
- Java 的封装、继承与多态的理解
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- 深入理解OOP(四): 多态和继承(抽象类)
- 对抽象,继承,多态的理解
- 深入理解OOP(第一天):多态和继承(初期绑定和编译时多态)
- java中对面向对象的三大特征:封装、继承、多态的理解
- 我理解的封装继承和多态
- 你真的理解了继承和多态吗?
- 对接口、继承、组合、多态的理解
- 简单理解Java中的类、对象、继承、多态等概念
- 我理解的封装继承和多态
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题
- java四大特性理解(封装继承多态抽象)
- 继承和多态理解(C#)
- 用于测试C++/C程序员的基本编程技能、编程质量以及对C++/C的理解程度的一份考卷试题