我已经阅读了很多关于java子类型和真正的子类型的解释 但是每次我变得更加困惑时,我需要对上面提到的所有内容进行完美的解释,我是否接受以下陈述?
提前致谢
答案 0 :(得分:1)
从另一个类继承的每个类都是子类
我会纠正这个
“扩展另一个类的每个类都是子类”
和FYI java中的每个类都默认扩展java.lang.Object
类,除了Object
类本身。
某些类是另一个类的java子类,如果它具有相同的方法
事实并非如此。考虑以下示例
class A {
public void someMethod(){
// method code
}
}
class B {
public void someMethod(){
// method code
}
}
两者都是独立的类,B
不是A
的子类,或者A
不是B
的子类。
真正的子类型是我们可以替换两个类之间的引用
编辑:
class A {
public void someMethod(){
// method code
}
}
class B extends A{
public void someMethod(){
// method code
}
}
您可以创建类B
的对象,它是A
的子类
A objB = new B();
这个概念是Runtime Polymorphism。你可以查看一篇文章Inheritance in Java。
答案 1 :(得分:0)
只有第一个陈述是真的。
#2:如果一个类是另一个类的子类,它将具有相同的方法(此语句的反向不一定正确)。考虑这个例子:
public class Animal
{
public void sayHello ()
{
System.out.println ("Hello!");
};
}
public class Dog extends Animal
{
public void sayHello ()
{
System.out.println ("Woof! I'm a dog.");
};
}
public class WebApplication
{
public void sayHello ()
{
System.out.println ("Welcome!");
};
}
WebApplication
和Dog
都有类似的sayHello
方法,但只有Dog
是Animal
的子类。
#3:我不知道“替换引用”是什么意思。如果Dog
是Animal
的子类,则可以将Dog
对象分配给Animal
引用,但反之亦然。