- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当一个类扩展另一个类时,它继承父类(super class)的所有方法和变量。如果您在具有相同签名的子类中以不同方式定义方法和变量,则它们可以在子类中以不同方式使用。现在 Oracle 区分覆盖和隐藏 (http://docs.oracle.com/javase/tutorial/java/IandI/override.html)。它说实例方法会覆盖其父类(super class)的方法,而类方法会隐藏它。“隐藏和覆盖之间的区别具有重要意义。被调用的被覆盖方法的版本是子类中的版本。被调用的隐藏方法的版本取决于它是从父类(super class)还是从子类调用。”
假设我有 2 个类 Yes 和 Maybe。是的扩展了可能。可能有字符串 a。
class Maybe {
String a;
public static void printOut() {
System.out.println("Maybe");
}
public void printAndSet() {
a = "Maybe";
System.out.println(a);
}
}
class Yes extends Maybe {
public static void printOut() {
System.out.println("Yes");
}
pubilc void printAndSet() {
a = "Yes";
}
}
class Print{
public static void mail(String[] args) {
Maybe m = new Maybe();
Yes y = new Yes();
Maybe.printOut();
Yes.printOut();
m.printAndSet();
y.printAndSet();
}
然后我说:它会打印出来或许是的或许是的
但是在我看了 Oracle 文章之后我认为它必须打印出来:
yes
yes
maybe
yes
因为实例方法覆盖了它的父类(super class)方法。
我很确定我的输出是正确的,但我也很确定,Oracle 知道更好,所以我想我只是不明白这篇文章。当我从父类(super class)的对象调用实例方法时,它使用的是被覆盖的方法,这不可能是真的。所以我不明白为什么要区分覆盖和隐藏!有人可以帮忙吗?
编辑;插入代码而不是描述类!
最佳答案
静态方法根本无法被覆盖。它们不是多态调用,因为它们不作用于类的实例,而是作用于类本身。
如果调用 Maybe.printOut()
,它将调用 Maybe
中定义的静态 printOut()
方法。在 Yes
中还定义了一个方法 printOut()
这一事实是无关紧要的:这两个方法除了它们的名称外没有任何共同点。
请注意,您可以通过简单地编写并执行程序来证实或证实您的疑问。
隐藏方法的问题只会在您开始对对象实例调用静态方法时出现。这是非常糟糕的做法,永远不应该这样做。如果您不遵守此规则,并且有以下情况:
Maybe m = new Maybe();
Maybe y = new Yes();
m.printOut(); // DON'T DO THAT: it should be Maybe.printOut();
y.printOut(); // DON'T DO THAT: it should be Maybe.printOut() or Yes.printOut();
结果将是maybe maybe
,因为在静态方法的情况下,重要的是不是对象的具体类型(Maybe
和 Yes
),但它们的声明类型(Maybe
和 Maybe
)。
关于Java 继承 : Overwritten or hidden methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11720216/
我想知道是否有任何方法可以调用和使用 overflow:hidden 隐藏得很好的东西。 为了阐明我的意思,在 this example我想知道“This is hidden”是div的隐藏部分。 这
如果我们有以下HTML StackOverflow 使用以下 CSS * { margin: 0; padding: 0; } #i { overflow:
我正在使用 jQuery 制作幻灯片,我有几张图片应该一次滑入一张图片。我正在使用宽度与图像宽度相同的 div:80 像素。我使用了 white-space:no-wrap 和 overflow:hi
如果我有一个样式为 overflow: hidden; 的 div,我发现有时键盘操作会导致 div 滚动。而且由于没有滚动条,所以真的没有办法让 div 回到原来的状态。除了指定样式以防止出现这种情
我有一个 UIImageView,在表格单元格中有一个自定义类,它也使用一个自定义类。 UIImageView 作为单元格自定义类的属性连接。 UIImageView 有一个调用方法的 UITapGe
我正在创建一个网站,在一个 div 中我有一个视频,但我不想在移动设备上显示这个视频,所以我使用 hidden-xs 和 hidden-sm,到目前为止一切顺利。 但是,我的问题是,当我使用这些类时,
我对 C++ 可见性属性有疑问。我已阅读 http://gcc.gnu.org/wiki/Visibility但我不太明白它是如何工作的。 我想在我拥有的一些共享库中隐藏可见性。我相信这意味着符号被隐
我通过CSS的草图创建了一个菱形,它位于一个圆圈的左上角。 我为圆圈设置了overflow: hidden。钻石怎么还能触发cursor: pointer? 这是 project 的代码笔. html
这个问题在这里已经有了答案: Shape with a slanted side (responsive) (3 个答案) 关闭 3 年前。
在使用 Angular Material 时,我一直在看到 aria 属性。有人可以向我解释一下 aria 前缀是什么意思吗?但最重要的是我想了解的是 aria-hidden 和 hidden 属性之
我正在阅读有关 aria 使用的一些内容,并遇到了以下文档: Fourth Rule of ARIA Use 。我不清楚的一个部分是: "Applying aria-hidden to a paren
以下是我的简单导航代码。单击右上角的图标时会出现两个 div。我还在顶部使用 :before 实现了这些分区的三 Angular 形提示。对于第一个 div,我设置了 overflow:scroll
input[type=hidden] 和 visibility : hidden; 有什么区别? 最佳答案 第一个是输入元素,第二个是CSS2中的样式。 visibility: hidden; vis
我遇到了一个奇怪的问题,似乎与浏览器相关(IE9 及更低版本与 IE11),但想知道为什么会出现奇怪的行为。 问题描述:我使用 Spring 框架并使用其相关标签库来检索 JSP 上的数据。有一个称为
我在 viewDidLoad 中的两个 UIView 上将 hidden 属性设置为 YES。单击按钮时,它们将设置为 NO,因此将显示它们。如何在每次单击按钮时使这些属性在是/否之间切换? 最佳答案
我正在尝试使用树状列表实现侧边栏。我希望树中的每个元素只填充一行——没有溢出,没有换行/换行。 overflow: hidden; 可能是一个很好的解决方案,但还有另一个要求 - 每行都有一个绝对 d
我想用 overflow: hidden 隐藏一个超出容器的标题: HTML: Heading CSS: div { overflow: hidden; } h1 { transfor
我对 overflow:hidden 和 body 标签有疑问。这是一个小例子 主体版本(不工作) http://jsfiddle.net/5hGSp/13/ DIV 版本(有效)
html 的“隐藏”属性是一个 bool 值,不需要设置值。仅仅存在就足够了。 “aria-hidden”属性怎么样?光有存在感就够了吗?或者它是否需要设置值“true”? 最佳答案 aria-hid
在我的页面上,我有一个导航菜单和两个内容容器。 内容容器使用overflow:hidden 以便一次只有一个子div 显示。 我希望导航链接充当相关内容的激活器,以便在容器中滚动查看。 因此,例如,如
我是一名优秀的程序员,十分优秀!