Tag: inheritance

方法重写和inheritance

public class Circle { public static final double PI = 3.141592654; protected double radius; public Circle(double radius) { this.radius = radius; } @Override public String toString() { return “Class = ” + getClass().getSimpleName() + ” (radius = ” + radius + “)”; } } public class PlaneCircle extends Circle { private double centerX, centerY; public […]

Java super()inheritance

这个问题的简短摘要:我有一个由子类扩展的父类。 public class Parent{ public Parent(){ //constructor logic } } 这个子类使用super调用Parent的构造函数: public class Child extends Parent{ public Child(){ super(); } } 如果我可以在Grandchild类的构造函数中调用super()方法,我想知道是否要扩展Child类: public class Grandchild extends Child{ public Grandchild(){ super(); } }

调用超类方法而不是子类方法

我们来看看这段代码: public class ParentClass { public void foo(Object o) { System.out.println(“Parent”); } } public class SubClass extends ParentClass { public void foo(String s) { System.out.println(“Child”); } public static void main(String args[]) { ParentClass p = new SubClass(); p.foo(“hello”); } } 我希望这打印出“Child”,但结果是“Parent”。 为什么java会调用超类,我该怎么做才能让它调用子类中的方法?

为什么构造函数不是inheritance的?

我一直在使用Eclipse Juno学习inheritance中的构造函数。 当我在childClass中按两次ctrl + O时,它显示inheritance的成员。 但我偶然看到inheritance成员中的超类构造函数 但据说构造函数不是inheritance的…… 有人可以解释一下这种行为吗?

inheritance不能调用子类方法

嘿我正在尝试调用子类方法(ChildClass扩展SuperClass()) SuperClass s=new ChildClass(); s.childClassMethod(); 它没有看到ChildClass方法我可以调用的唯一方法来自SuperClass()我知道它可能是一个愚蠢的问题,但无论如何欢呼

Javainheritance(方法覆盖和重载)

除了Javainheritance是该语言的基本特征之外,我还有一些问题。 以下是我的测试示例的来源: class MyClass{ public void say(String t){ System.out.println(“Hello MyClass “+t); } public void print(MyClass t){ System.out.println(“MyClass is printed”); } public void anotherPrint(int i){ System.out.println(“MyClass is printed again”); } } class MyClass2 extends MyClass{ public void say(String t){ System.out.println(“Hello MyClass2 “+t); } public void print(MyClass2 t){ System.out.println(“MyClass2 is printed”); } public void anotherPrint(double i){ System.out.println(“MyClass2 […]

当我可以通过引用子类访问所有方法时,为什么要引用基类?

我正在学习java概念。 我对javainheritance概念有疑问。 在inheritance中,我们可以将子类实例分配给基类引用,并且我们只能访问基类函数。 我们可以将inheritance层次结构中的任何子类实例分配给基类引用。对于分配给特定基类引用的实例类型,我们只能访问基类函数,但我没有发现任何区别。 任何人都可以给我实际的概念,为什么我们必须将子类实例分配给基类引用? 有什么需要这样做? 相反,我们可以从子类引用只知道访问那些基类函数。 通过考虑层次结构中的特定基类和许多子类来解释。

Javainheritance:如何在Java中不允许实现类似于“多重inheritance”的东西?

这是一个主要关于Javainheritance的问题。 我正在开发一个有2个窗口的程序,这两个窗口都将在不同的类中开发,这些窗口将扩展JPanel。 第一个类是“FileSub1”,第二个类是“FileSub2”。 这两个类有很多共同的方法,所以我想创建一个名为“Files”的类,并将“FileSub1”和“FileSub2”作为其子类。 但是Java不支持多重inheritance! 我能在这做什么?

force base class使用自己的方法而不是覆盖方法

这是我的情景: class SomeBaseClass { public void foo(String str) { ……. } public void foo(String strs[]) { ……. } } class MyClass extends SomeBaseClass { public void foo(String str) { super.foo(str); } public void foo(String strs[]) { throw new RuntimeException(“only one input please!”); } } 逻辑非常简单。 “SomeBaseClass”是我无法修改的第三方工具。 我想限制它的function,不想允许foo(String strs [])。 问题是在SomeBaseClass里面foo(Sting str)内部调用foo(String strs [])。 因此,当我调用MyClass的foo(String str)时,我得到一个运行时exception。 […]

是什么让Enum课程无法获得?

我一直在查看Enum类的源代码 。 它看起来像是一个带有受保护构造函数的普通抽象类。 它不是最终的,它内部没有任何特殊的注释,也不使用本机代码。 然而,它不能直接子类化。 实际上,以下代码无法编译: class Foo<E extends Enum> extends Enum { Foo(String name, int ordinal) { super(name, ordinal); } } 我知道Enum是Java中的一个特殊类,我知道有很好的理由可以禁止直接子类化。 但从技术上讲,你如何执行这种行为? 程序员是否可以创建一个类似的非final类,尽管有一个可访问的构造函数,但它不允许直接子类化?