在java中,他们说类不能被多个超类继承。只能是一个。请参阅此代码,
Animal.java
public class Animal { }
Dog.java
public class Dog extends Animal{
public static void main(String[] args) {
Animal animal = new Animal();
Dog bulldog = new Dog();
Dog rottweiler = new Dog();
if (bulldog.equals(rottweiler)) {
System.out.println("animal == bulldog");
}else {
System.out.println("animal != bulldog");
}
} }
听到我们可以看到Dog类继承自Animal。但我使用的是equals方法,它属于java中的 Object 类。在SCJP一书中,他们说java中的每个类都是Object类的子类。是..!这就是为什么我能够在Dog类中使用equals等方法。那么我的问题是,我们不是在不知不觉中在java中使用多重继承吗?为什么因为我们从Object类和Animal类继承到Dog类?
答案 0 :(得分:3)
在这种情况下,Animal
延伸Object
;并Dog
延伸Animal
。因此,无论如何它都是单一的继承。
equals()
方法在Object
中定义,Dog
可通过 Animal
答案 1 :(得分:0)
Java支持多级继承,但不支持多继承。
因此,在您的情况下,Dog
扩展Animal
和Animal
扩展Object
,这是合法的。
答案 2 :(得分:0)
Java中的每个类(Object
除外)都只有一个 immediate 超类。如果您的示例中有一个名为Rottweiler
的类,那么Rottweiler
的直接超类将为Dog
,Dog
的直接超类将为Animal
并且Animal
的直接超类将是Object
。虽然Rottweiler
有三个超类(Dog
,Animal
和Object
),并且可以继承所有这三个超级成员,但它只有一个立即超类。
如果我们有多重继承,我们就可以执行定义Dog
以扩展Animal
和Companion
的操作。但我们不能用Java做到这一点。
答案 3 :(得分:0)
这称为“多级继承”而不是多重继承。
考虑以下示例:
示例1:
class Foo { // Here you haven't specified any extends, so internally it will be
// from Object class
}
示例2:
class Bar extends Foo { //Here you have Foo as parent class
//Now Bar has all of the methods which are accessible
//from Foo as well as Object which is a parent of your
//class "Foo"
}
这就是你所假设的:
class Bar extends Foo,Object { //No this is not how it works
}
希望它对你有所帮助。