Tag: inheritance

在实例化(子)类时,您声明对象的“类型”是否有任何区别?

假设我有一个名为ParentClass的类和一个名为ChildClass的类 ParentClass是抽象的, ChildClass扩展了每个Java术语的ParentClass 。 此外, ParentClass有一个构造函数,它将int作为参数。 现在在另一个类中我想实例化ChildClass 。 我尝试了以下两种方式: ChildClass obj1 = new ChildClass(5) ParentClass obj2 = new ChildClass(5) Java允许我使用上述两种方法中的任何一种。 我的问题是,实际上有什么区别吗? 如果我愿意,我可以互换使用吗?

Java中的循环inheritance层次结构

我知道Java中不允许使用循环inheritance层次结构。 编译器抛出一个错误,但我真正感兴趣的是知道编译失败的确切原因。 class A extends B{} class B extends C{} class C extends A{} // this will give you compile time error. 编译器抛出错误的原因是什么,我编写代码class C extends A{}的时刻class C extends A{}

Java方法覆盖和变量阴影

public class Circle { public float r = 100; public float getR() { return r; } } public class GraphicCircle extends Circle { public float r = 10; public float getR() { return r; } // Main method public static void main(String[] args) { GraphicCircle gc = new GraphicCircle(); Circle c = gc; System.out.println(“Radius = […]

superClass的私有成员是否由子类inheritance… Java?

我经历过这个: 子类是否inheritance私有字段? 但我还是很困惑…… 我说的只是inheritance而不是访问。 我知道他们在副class上并不明显。 但是子类’对象是否拥有超类中那些私有成员的自己的副本? 例如… class Base { private int i; } class Derived extends Base { int j; } 现在, Base b = new Base(); Derived d = new Derived(); int的大小是4 现在, b的大小是4,d的大小是8 要么 d的大小也只有4? 当然,当我说b和d而不是引用时,我正在谈论堆上的对象。 更新:我刚刚阅读了Kathy Sierra和Bert的SCJP书……它说它们不是inheritance的……我发布了这个更新,因为仍然有很多人说是的…

使用接口引用访问java Object类方法

让我们考虑以下示例。 public interface SimpleInterface { public void simpleMethod(); } public class SimpleClass implements SimpleInterface{ public static void main(String[] args) { SimpleInterface iRef = new SimpleClass(); SimpleClass cRef = new SimpleClass(); iRef.simpleMethod(); // Allowed. Calling methods defined in interface via interface reference. cRef.specificMethod(); // Allowed. Calling class specific method via class reference. iRef.specificMethod(); // Not allowed. […]

在Java中对子类进行排序

假设一个Superclass implements Comparable ,这样就是Arrays.sort(ArrayOfSuperInstances); 使用此compareTo(Superclass other)方法进行排序。 这是否保证Subclass extends Superclass的实例数组将使用Arrays.sort(ArrayOfSubInstances);以相同的方式Arrays.sort(ArrayOfSubInstances); ? (假设compareTo在子类定义中没有重载) 或者换句话说,默认情况下Subclass会inheritance其Superclass的compareTo方法,以便可以盲目地使用Arrays.sort()知道它们将被排序为超类吗?

为什么界面方法没有正文

要实现多重inheritance,我们必须使用接口,但为什么接口方法没有实体,为什么必须在派生类中重写它们? 我真的想要一个清晰的答案,不涉及太多的计算机术语,我似乎无法理解这一点,我已经提到了各种参考

在具有generics的子类型的inheritance接口中覆盖方法

我在java中有以下层次结构: interface ObserverA {} interface A { void method1(); addObserver(Observer o); } 我想像这样扩展它: interface ObserverB extends ObserverA{} interface B extends A { void method2(); addObserver(ObserverB o); } 以这种方式, B的addObserver()方法将覆盖A的相同方法。 因为它不起作用, B实现需要实现addObserver()两个版本,我不会只有一个版本。 这可以通过巧妙的方式完成,不需要参数化A如: interface A { addObserver(O o); } Hackish解决方案非常受欢迎!

Maven包括父类

我有一个相当简单的maven-ized Java项目,但我很难理解它。 我的父模块定义了许多我希望对几个子模块有用的Java类(和依赖项)。 其中一个子模块专门用于部署Web应用程序,因此它需要一些额外的类(servlet)以及来自父模块的所有内容。 文件结构如下所示 – parent – src – pom.xml – child – src – pom.xml 我的父母pom看起来像这样: my.group parent 0.0.1 pom … child 孩子看起来像这样: child war parent my.group 0.0.1 … 这是我需要让孩子知道父类中定义的类和依赖关系吗? 它似乎不是:eclipse给出编译错误,并且从父文件夹或子文件夹运行mvn clean包时会在提到父类的任何时候产生“找不到符号”消息。 我究竟做错了什么?

受保护的成员行为一旦被inheritance。

我对保护标识符有一些疑问。 在K.Sierra的Sun认证Java程序员学习指南的第一章中,我发现了以下信息: “一旦子类 – 外包inheritance受保护的成员,该成员(由子类inheritance)对子类外的任何代码都是私有的,除了子类的子类。” 我提供了反映上述陈述的示例代码,这对我来说是绝对清楚的。 // Parent class package package1; import package2.Child; public class Parent { protected int i = 5; } // Child class package package2; import package1.Parent; public class Child extends Parent { // variable ‘i’ inherited } package package2; public class Neighbour { public void protectedTesting(){ Child child = new Child(); […]