`

一个关于继承和多态的问题(提问篇)

阅读更多

        这个问题是我自己的一个盲点问题,因为当我看到以下的代码以及选项的时候,我做出了错误的选择。后来,我知道了原因所在,但是我想应该会有很多不同的解释,特将问题列示如下。首先,先看一下代码:

public class Test {
    
public static void main(String[] args) {
      A ref1 
= new C();
      B ref2 
= (B) ref1;
      System.
out.println(ref2.g());
    }

}

class A {
    
private int f() {
     
return 0;
    }

    
public int g() {
     
return 3;
    }

}

class B extends A {
    
private int f() {
     
return 1;
    }
    
    
public int g() {
     
return f();
    }
    
}


class C extends B {
    
public int f() {
     
return 2;
    }

}

问题是:请问打印出来的是0,是1,是2,还是3?如果是ref1.g()的话,结果又是什么呢?也许问题很简单,还请各位不吝指教,谢谢!

分享到:
评论

相关推荐

    编程培训心得3篇.docx

    面向对象特性包括封装、继承和多态。 - **简单性**:C#摒弃了C++中的指针,使用受管理的代码,不允许直接内存操作,降低了编程的复杂性和错误可能性。统一的类型系统使得所有类型都可以被视为对象,简化了代码处理...

    三个重要的perl开发帮助文档

    还有,熟悉面向对象编程的概念和Perl中的实现,如类、对象、继承和多态,对于编写大型复杂项目至关重要。 在学习Perl的过程中,阅读和理解这些文档将有助于提高编程技巧,同时也可以通过实践编写小程序来巩固知识。...

    Java实习报告总结3篇.pdf

    1. **基础概念**:Java是一种面向对象的编程语言,其语法特点包括类、对象、封装、继承、多态等。实习初期,实习生主要学习这些基础概念,并通过编写小程序来实践。 2. **输入/输出流(I/O流)**:Java的I/O流系统...

    非计算机专业出身,能做好Java吗?共5页.pdf.zip

    Java是一门面向对象的语言,这意味着你需要理解类、对象、封装、继承和多态等概念。即使没有计算机专业的背景,通过自学或者参加在线课程,都可以掌握这些基础知识。例如,你可以从学习Java语法开始,比如变量、数据...

    2022计算机学生实习报告范文.docx

    5. **错误处理与调试**:面对编程中的问题,需要有冷静思考和专注的态度,通过查阅资料、提问和团队合作来解决问题。这反映了良好的编程习惯和团队协作能力的重要性。 6. **软件工程与项目管理**:软件工程专业要求...

    java程序员面试笔试宝典 + 115个Java面试题和答案+进入IT行业必读的324个java面试题

    设计模式是衡量一个程序员综合素质的重要标准。常见的23种设计模式,如单例、工厂、观察者、装饰器、代理等,以及何时使用它们,如何在实际项目中应用,都是面试官喜欢提问的领域。 最后,对于框架的应用,如Spring...

    VC++.Net学习经验谈

    这篇文章将分享一些关于如何有效学习VC++.Net的经验和技巧。 一、基础知识的积累 在深入学习VC++.Net之前,确保你已经掌握了基础的C++语言知识,包括语法、数据类型、控制结构(如循环和条件语句)、函数等。此外,...

    深圳校区大数据技术之企业真题V1.1.0.doc

    1. **Java 多态与继承**:Java中的多态是指一个接口可以有多种不同的表现形式,这在面向对象编程中是核心特性。继承则是类之间的一种关系,一个类可以继承另一个类的属性和方法,从而实现代码的复用和扩展。 2. **...

    毕业季分享-美团面试经验

    此外,对于美团面试,还会涉及到实际项目经验和问题解决能力。例如,你在过去的项目中是如何优化性能、解决线上问题的,以及你如何协同团队完成复杂任务。展示出你具备良好的沟通能力和团队合作精神。 至于蚂蚁金服...

    编程及C/C++初学者 FAQ

    通过集中整理与解答这些问题,帮助读者更好地理解编程的基本概念,顺利运行自己的第一个程序。 #### 二、FAQ详解 ##### 1. FAQ是什么? FAQ(Frequently Asked Questions)即“常见问题解答”,是一种汇总了大家...

    《面向对象的程序设计(java)》教学大纲2010版1.doc

    3. **期末报告**:以小组形式提交一个基于Java的信息系统设计与开发项目报告。 #### 六、推荐教材与参考资料 - **选用教材**:耿祥义、张跃平著,《Java2实用教程》,清华大学出版社,2006年8月,第3版。 - **参考...

    面试总结

    在IT行业中,面试是检验...这些技术在实际开发中扮演着关键角色,面试官通过提问这些知识点,可以评估求职者的实际开发经验和问题解决能力。掌握并能灵活运用这些技术,对于在IT行业,尤其是Java开发领域发展至关重要。

    Java面试及简历相关

    - **问题提问**:在面试结束时,可以询问公司项目、团队文化等问题,显示你的专业性和对工作的热情。 以上内容涵盖了Java面试的主要技术点,对于求职者来说,扎实的理论基础、丰富的实践经验以及良好的沟通能力都...

    浅谈java中的对象、类、与方法的重载

    继承允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码的复用。多态则指同一个方法在不同对象上可能有不同的表现形式。 在Java中,类的定义通常如下所示: ```java class 类名 { 访问修饰符 ...

    深入浅出MFC——MFC初级入门(繁体版)

    - **ScribbleStep0**:这部分可能包含了关于如何开始编写第一个MFC程序的具体指导。 以上是对《深入浅出MFC》一书的部分内容的详细解析,旨在帮助读者更好地理解MFC编程的基础知识和实践技巧。通过这些知识点的...

    yawptut:YAWP! 教程APP

    2. **面向对象篇**:讲解类、对象的创建和使用,封装、继承、多态等核心面向对象概念。 3. **高级特性篇**:涉及异常处理机制、内部类、匿名类、枚举、注解等Java的高级特性。 4. **集合框架篇**:介绍ArrayList、...

Global site tag (gtag.js) - Google Analytics