Tag: inheritance

inheritance,方法签名,方法重写和throws子句

我的Parent课是: import java.io.IOException; public class Parent { int x = 0; public int getX() throws IOException{ if(x<=0){ throw new IOException(); } return x; } } 我extend这个类来编写一个子类Child : public class Child1 extends Parent{ public int getX(){ return x+10; } } 请注意,在覆盖 Child类中的getX方法时,我已从方法定义中删除了throws子句。现在,它会导致编译器出现exception行为,这是预期的: new Parent().getX() ; 如果没有将其包含在try-catch块中,则无法编译。 new Child().getX() ; 编译时不将其封闭在try-catch块中。 但是下面的代码行需要try-catch块。 Parent p = new Child(); […]

使用inheritance构建通用树

我正在构建一个通用的Tree类,它支持子树的inheritance。 但我遇到了一些问题。 请你帮帮我吗? 描述 让我们定义Tree类和BlueTree类,其中BlueTree extends Tree 。 让我们定义Leaf类和RedLeaf类,其中RedLeaf extends Leaf 。 它们被用作树包含的“数据”。 Tree表示Tree类型的Tree ,其“data”是Leaf类型。 对于inheritance (这不是适当的Javainheritance): Tree可以有类型的子项 Tree , Tree , BlueTree和BlueTree 。 。 Tree可以有类型的子项 Tree和BlueTree , 但不是 Tree或BlueTree 。 。 BlueTree可以有类型的子项 BlueTree和BlueTree , 但不是 Tree或Tree 。 。 BlueTree可以有类型的子项 BlueTree , 但不是 Tree , Tree或BlueTree 。 *这里,“孩子”是指树的分支/叶子。 (有点复杂,这就是我将线分开的原因。) 代码 (如果你有一个解决方案,你可能不需要阅读下面我的尝试的详细说明。如果你想一起找到解决方案,我的代码可能会给你一些想法 – 或者,它可能会混淆它们。) 初审 :(简单的) […]

Javainheritance中的“this”关键字如何工作?

在下面的代码片段中,结果确实令人困惑。 public class TestInheritance { public static void main(String[] args) { new Son(); /* Father father = new Son(); System.out.println(father); //[1]I know the result is “I’m Son” here */ } } class Father { public String x = “Father”; @Override public String toString() { return “I’m Father”; } public Father() { System.out.println(this);//[2]It is called in […]

在Java 8中使用多重inheritance

我使用 Java 8的function还是滥用它? 请参阅下面的代码和说明,了解为什么选择这样的代码。 public interface Drawable { public void compileProgram(); public Program getProgram(); default public boolean isTessellated() { return false; } default public boolean isInstanced() { return false; } default public int getInstancesCount() { return 0; } public int getDataSize(); public FloatBuffer putData(final FloatBuffer dataBuffer); public int getDataMode(); public boolean isShadowReceiver(); public boolean isShadowCaster(); […]

Java为什么接口扩展接口

我想知道在什么情况下我们从接口扩展接口? 因为,例如 interface A{ public void method1(); } interface B extends A{ public void method2(); } class C implements B{ @Override public void method1(){} @Override public void method2(){} } 不等于 interface A{ public void method1(); } interface B{ public void method2(); } class C implements A, B{ @Override public void method1(){} @Override public void method2(){} […]

Java中的虚拟表和摘要

在一次采访中,我得到了以下代码: public abstract class Base { public int x = 1; public Base() { foo(); } public abstract void foo(); } public class Derived extends Base { int x = 2; @Override public void foo() { System.out.println(“Derived: “+x); } } class Main { public static void main(String… args) { Base base = new Derived(); base.foo(); […]

类OBJECT中的默认构造函数是做什么的?

我是Java初学者,学习Java编译器规则,如下所示: 如果类没有超类,则将其扩展为Object类 如果类没有构造函数,则添加默认的无参数构造函数 如果构造函数的第一行不是“super()”或“this()”,则添加“super()”来调用超类的默认构造函数。 我知道我们创建的所有对象都是从超类Object派生的。 我的问题是Object类中的构造函数在调用时会做什么? 编辑:我的问题是关于构造函数在Object类中做了什么? 我知道子类默认调用超类的构造函数。 例如,我有以下代码(我明确地扩展到Object并调用super()来说明编译器的作用)。 我的问题是,对super()的调用是做什么的? public class Person extends Object { private String name; public Person(String n) { super(); this.name = n; } }

使用Java中的几个子类实现父类方法

我有一个类(我们称之为A ),它由几个子类( B , C , D等)扩展。 在每个子类中,我都希望从父类A的实例化中访问特定的方法。 我试图将A声明为抽象类,并将每个子类方法声明为抽象。 然后我在他们自己的类中实现了这些方法,但似乎每个子类必须实现父类的每个方法。 但是,我不能这样做。 你对这个问题有什么看法吗?

在java中以同一行打印

我有一个名为Items和3个派生类的基类,在Items基类中,我有一个表单的打印function public void print(){ System.out.println(“ID ” + id + ” Title ” + title + ” “); } 在每个派生类中,我通过super.print();调用Items打印函数super.print(); 其后是与派生类相关的特定打印function。 我的问题是,每当从一个派生类执行打印时,打印的文本就不在同一行上。 所以super.print()将在派生类打印函数之上。 我如何让他们俩在同一条线上?

初始化时你称之为超类和子类?

List list = new ArrayList(); 在识别除超类和子类之外的部分时,List和ArrayList是什么? List是引用和ArrayList的类吗? 如果他们是相同的,他们会被称为别的东西: ArrayList list = new ArrayList();