Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java子类型、子类和true子类型_Java_Inheritance - Fatal编程技术网

java子类型、子类和true子类型

java子类型、子类和true子类型,java,inheritance,Java,Inheritance,我已经阅读了很多关于java子类型和真正的子类型以及 子类,但每次我变得更困惑,请我需要一个完美的解释,所有上述提到的,我在下面的陈述是正确的 从另一个类继承的每个类都是一个子类 如果某个类具有相同的方法,则该类是另一个类的java子类 真正的子类型是当我们可以替换两个类之间的引用时 提前感谢这些陈述中只有第一条是正确的 #2:如果一个类是另一个类的子类,它将具有相同的方法(此语句的相反部分不一定正确)。考虑这个例子: public class Animal { public void

我已经阅读了很多关于java子类型和真正的子类型以及 子类,但每次我变得更困惑,请我需要一个完美的解释,所有上述提到的,我在下面的陈述是正确的

  • 从另一个类继承的每个类都是一个子类
  • 如果某个类具有相同的方法,则该类是另一个类的java子类
  • 真正的子类型是当我们可以替换两个类之间的引用时

  • 提前感谢

    这些陈述中只有第一条是正确的

    #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
    引用,但不能反之亦然。

    从另一个类继承的每个类都是子类

    我会纠正这一点

    “扩展另一个类的每个类都是一个子类”

    仅供参考,默认情况下,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
    as的子类

    A objB = new B();
    

    这一概念是正确的。你可以看一篇关于这方面的文章。

    你能解释一下,我考试了,我完全迷路了,因为每次我理解的东西都不一样!!谢谢,但是java子类型和true子类型之间还有什么区别呢?而且如果类A扩展了B,那么这里的每个B都是A,那么我可以在它们之间进行替换!