`
eriol
  • 浏览: 410840 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java中的override问题

    博客分类:
  • Java
阅读更多

有这样一个例子:

 

public class PrivateOverride {
    private void f() { System.out.println("private f()"); }
    public static main(String[] args) {
        PrivateOverride po = new Derived();
        po.f();
    }
}

class Derived extends PrivateOverride {
    public void f() { System.out.println("public f()"); } 
}

 

输出结果为private f()

解答:如果基类中的f方法不是private,那么 po.f();应该调用的是子类的f方法;
但是如果基类的f方法为private,那么该方法对于子类来说是不可见的,所以子类的f方法并不是重写了基类的f方法,而是另一个f方法,只不过和基类的 f名字相同,因为他不知道基类有f方法,所以基类也不知道子类有f方法,所以在 po.f();时,就会认为子类没有f方法,所以就调用的基类的f方法。

0
0
分享到:
评论

相关推荐

    Lua 类的继承与override

    本文将深入探讨 Lua 中如何实现类的继承以及方法的重写(override)。 首先,我们来理解 Lua 中的“类”。在 Lua 中,类通常被表示为一个表(table),这个表包含了类的一些属性和方法。创建一个类,我们可以定义一...

    java关于@override.md

    对Java中@override个人理解阐述,希望能帮大家更好理解。

    分享一下@Override标签背后的小秘密

    Java 中的@Override标签的深入理解 @Override标签是一个非常重要的标签,但是一般情况下,我们只是知道它的基本用途,即用于标记方法的重写。但是,这个小小的标签蕴藏着很多有趣的秘密。今天,我们就来深入探讨...

    java代码-Override

    在Java编程语言中,`Override`关键字是一个非常重要的概念,它用于标识一个方法是重写了父类中的同名方法。这个关键词确保了子类的方法能够覆盖或实现接口中定义的抽象方法,从而提供了多态性,这是面向对象设计的...

    Java 重写(Override)与重载(Overload).pdf

    根据提供的文件信息,我们可以深入探讨Java中的两个核心概念:重写(Override)与重载(Overload)。这两个概念在面向对象编程中非常重要,尤其是在Java这样的语言中。 ### Java中的重写(Override) #### 什么是重写? ...

    Override错误已解决

    在进行 Java 开发的过程中,特别是在使用 Eclipse 这样的集成开发环境(IDE)时,开发者可能会遇到一个常见的问题:`Override` 错误。这种错误通常发生在尝试覆盖父类中的方法时,而 IDE 或编译器未能正确识别该操作...

    override abstract virtual interface比较

    C# 中 override、abstract、virtual、interface 的比较 在 C# 编程语言中,override、abstract、virtual、interface 是四个关键字,它们之间存在着紧密的联系,我们经常会遇到 override、abstract、virtual 这三个...

    java 中文姓氏 排序

    本文将详细介绍如何在 Java 中对包含中文姓氏的对象列表或字符串列表进行排序。 #### 二、基本概念 1. **Collator 类**:这是 Java 中用于文本排序和检索的标准类。`Collator` 类提供了与语言环境相关的字符串排序...

    android @override 报错解决方案

    现象: … java: 1801: method does not override a method from its superclass @Override… 原因: Eclipse is defaulting to Java 1.5 and you have classes implementing interface methods (which in Java 1.6 ...

    The method of type must override a superclass method解决方式, myeclipse, java, web

    在Java编程语言中,"The method of type must override a superclass method" 是一个常见的错误提示,它通常出现在子类试图重写父类方法时,但没有按照正确的格式进行。这个错误通常与多态性和继承概念有关,是理解...

    java中文排序,数字字母汉字排序

    在Java编程语言中,对包含中文、数字和字母的数据进行排序是一项常见的任务。这个场景下,我们关注的是如何实现一个自定义的排序规则,按照数字、字母和汉字的顺序进行排列。以下是对这一主题的详细解释。 首先,...

    Java重写(Override)&重载(Overload).pdf

    Java中的重写(Override)和重载(Overload)是面向对象编程中的两个核心概念,它们都是为了提高代码的灵活性和可复用性。 **重写(Override)** 是指子类能够重新定义父类中非私有(public或protected)的方法,以便在...

    java中多态的内存分析

    Java中的多态性是面向对象编程的一个核心特性,它允许我们使用父类引用指向子类对象,从而实现灵活的代码设计。多态性分为编译时多态和运行时多态,其中运行时多态是Java中最常见的形式,也称为动态绑定。在深入探讨...

    详解Java中@Override的作用

    在Java编程语言中,`@Override` 是一个重要的注解,它的主要作用是明确标识一个方法是重写了其父类中的方法。这个注解在代码的可读性和编译时的错误检查方面提供了显著的优势。下面我们将深入探讨`@Override` 的作用...

    java集合某个字段按照中文拼音排序.docx

    Java集合某个字段按照中文拼音排序是Java开发中经常遇到的问题。对Java集合中的某个字段按照中文拼音排序可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用Comparable接口 在Java中,我们可以使用...

    java中相似概念的区别

    在Java编程语言中,存在着众多看似相似但实质上有着显著区别的概念,这些概念的深入理解对于编程者来说至关重要。本文将重点解析标题与描述中提及的一些关键知识点,包括final、finally、finalize的区别,以及...

    从虚拟机角度看Java多态->(重写override)的实现原理

    在Java中,多态性主要通过继承、接口和方法重写(Override)来实现。这里我们将深入探讨从虚拟机(JVM)的角度来看,Java如何通过方法重写来实现多态。 首先,理解Java的类加载机制对于解析多态性至关重要。当Java...

    Java overload和override的区别分析

    Java中的方法重载(Overloading)和重写(Overriding)是两个重要的概念,它们都是实现多态性的方式,但有着本质的区别。 1. **方法重载(Overloading)**: 方法重载是指在同一个类中可以有多个同名方法,但这些方法的...

    java代码-Override2

    在Java编程语言中,`Override` 是一个非常关键的概念,它允许子类重写父类中的方法,以实现特定的功能或者优化性能。本项目“java代码-Override2”显然是一个探讨`Override`特性的实例。下面我们将深入讲解`Override...

    java中文过滤器

    在Java Web开发中,"java中文过滤器"是一种常见的技术,用于处理B/S(Browser/Server)架构下中文字符编码的问题。在B/S系统中,数据通常通过HTTP协议在网络间传输,而HTTP协议默认并不规定字符编码,这可能导致在...

Global site tag (gtag.js) - Google Analytics