Tag: 隐藏

为什么Java不允许通过实例方法隐藏静态方法?

如http://docs.oracle.com/javase/tutorial/java/IandI/override.html所示,Java确实允许 通过实例方法覆盖实例方法 通过静态方法隐藏静态方法 我的问题是为什么Java不允许通过实例方法隐藏静态超类方法 。 这可以这样做: class Base { static void foo () {} } class Derived extends Base { void foo () {} void access () { foo (); Base.foo (); } } 我没有看到上述方法有任何特殊问题 – 它只是像“允许”隐藏静态的那样“混乱/复杂”。

Java中的重载和隐藏方法

我有一个带有public insert()方法的抽象类BaseClass: public abstract class BaseClass { public void insert(Object object) { // Do something } } 这是由许多其他类扩展。 但是,对于其中一些类, insert()方法必须具有其他参数,以便它们不会覆盖它,而是使用所需的参数重载基类的方法,例如: public class SampleClass extends BaseClass { public void insert(Object object, Long param){ // Do Something } } 现在,如果我实例化SampleClass类,我有两个insert()方法: SampleClass sampleClass = new SampleClass(); sampleClass.insert(Object object); sampleClass.insert(Object object, Long param); 我想要做的是隐藏基类中定义的insert()方法,以便只显示重载: SampleClass sampleClass = new SampleClass(); […]

Javagenerics类型参数隐藏

我正在定义一个类: class Foo<I extends Bar & Comparable> { } 编译器抱怨I被I隐藏了。 我猜我第二次出现在定义中是隐藏在第一个范围内,好像变量I可以分配给两个不同的类型。 怎么做得对? 编辑: 这是一个内在阶级。 完整的代码可以是: class Baz { class Foo<I extends Bar & Comparable> { } } 现在的问题是,如果我重新提名内部I到J ,我不确定I和J实际上是相同的类型。

隐藏Javainheritance中的字段

在类中,与超类中的字段具有相同名称的字段会隐藏超类的字段。 public class Test { public static void main(String[] args) { Father father = new Son(); System.out.println(father.i); //why 1? System.out.println(father.getI()); //2 System.out.println(father.j); //why 10? System.out.println(father.getJ()); //why 10? System.out.println(); Son son = new Son(); System.out.println(son.i); //2 System.out.println(son.getI()); //2 System.out.println(son.j); //20 System.out.println(son.getJ()); //why 10? } } class Son extends Father { int i = 2; int j […]