当前位置: 首页 > 面试题库 >

类扩展多个Java类吗?

葛泳
2023-03-14
问题内容

我知道一个类可以实现多个接口,但是可以扩展多个类吗?例如,我希望我的班级同时扩展TransformGroup我创建的类。这在Java中可行吗?这两个语句class X extends TransformGroup extends Yclass X extends TransformGroup, Y收到一个错误。如果不可能,为什么呢?TransformGroup扩展,Group但我猜它也扩展了,Node因为它继承了字段,Node并且可以在需要Node对象的地方传递。同样,像Java中的所有类一样,它们扩展了Object类。那么为什么不能扩展一个以上的类呢?

TransformGroup继承

那么,如果可能的话,正确的方法是什么?如果没有,我为什么以及如何解决这个问题?


问题答案:

在Java中,不允许多重继承。作为一种设计决策,从语言中排除了它,主要是为了避免循环依赖。

方案1: 您已经了解到Java不可能实现以下功能:

public class Dog extends Animal, Canine{

}

方案2: 但是可能以下情况:

public class Canine extends Animal{

}

public class Dog extends Canine{

}

这两种方法的区别在于,在第二种方法中,有一个明确定义的父super级或类,而在第一种方法中,super类是模棱两可的。

试想,如果两者AnimalCanine有一个方法drink()。在第一种情况下,如果我们调用哪个父方法Dog.drink()?在第二种情况下,我们知道只要没有覆盖它,调用Dog.drink()就会调用Canineclasses
drink方法Dog



 类似资料:
  • 问题内容: 我怎样才能做到这一点: 另外,我想知道这种方法是否可行,因为我已经在类中创建了菜单,即ControlMenu,并且在其他活动中继续进行扩展。 问题答案: 你只能扩展一个类。并从许多来源实现接口。 扩展多个类不可用。我能想到的唯一解决方案不是继承任何一个类,而是每个类都有一个内部变量,并通过将对你对象的请求重定向到你希望它们去的对象来做更多的代理。 这是我想出的最好的解决方案。你可以从这

  • java中有扩展多个类的方法吗?例如,学生可以被称为人,也可以被称为动物(你明白我的意思了)。如果没有,有什么办法?

  • 问题内容: 在Java中,我可以以某种方式强制某个扩展了抽象类的类以将Object作为参数实现其构造函数吗? 就像是 问题答案: 您可以在抽象类中使用带有参数的构造函数(如果要禁止匿名子类,请将其保护)。 这样做会强制实现类具有显式构造函数,因为它必须使用一个参数来调用超级构造函数。 但是,您不能强制覆盖的类具有带有参数的构造函数。它总是可以伪造这样的参数:

  • 你好,有人知道如何发现扩展< code>ArrayBlockingQueue的类吗?例如,我想监视下面的< code>MyBufferQueue类 在属于java库的< code>ArrayBlockingQueue类中,有这样一个方法: 我遇到的问题是,当我监视类< code>MyBufferQueue时,以及在测试期间访问方法< code > ArrayBlockingQueue . put(

  • 验证码生成 缓存支持

  • 问题内容: 我知道Java不允许我们扩展多个类。我知道接口也存在,并且我这次不想使用它们。是否存在某种技巧或解决方法来扩展Java中的多个类?如果是,请同时提供示例代码。 问题答案: 您可以使用界面和组合 轻松 完成此操作。 问题是为什么你会问这样的事情?为什么不希望在“此时”使用接口? 您必须知道Java仅允许实现的单一继承。您在SO上度过了七个月,因此,您肯定必须知道如何使用搜索功能。这个问题