Class 什么是子类和超类?

Class 什么是子类和超类?,class,Class,我真的很想知道这件事。我听过很多人提到它们,但不知道它们到底是什么。我假设它们在所有基于类的语言中都是相同的,如果不是,那么它们在Java中是什么 抱歉我的无知,但我正在学习Java,我的书只解释了基本知识。子类扩展了超类。它们使用超类的部分或全部功能,但也有自己独特的功能。两个不同的类可以扩展同一个超类并共享其功能。这样,就不必将超类中的代码复制到两个子类中 例如:假设你有两个班,一只猫和一只鹦鹉。它们看起来像这样: class Cat { private int speed;

我真的很想知道这件事。我听过很多人提到它们,但不知道它们到底是什么。我假设它们在所有基于类的语言中都是相同的,如果不是,那么它们在Java中是什么


抱歉我的无知,但我正在学习Java,我的书只解释了基本知识。

子类扩展了超类。它们使用超类的部分或全部功能,但也有自己独特的功能。两个不同的类可以扩展同一个超类并共享其功能。这样,就不必将超类中的代码复制到两个子类中

例如:假设你有两个班,一只猫和一只鹦鹉。它们看起来像这样:

class Cat {
    private int speed;
    private String name;
    private String sound;

    public void meouw() {
        //make a sound.
    }

    public void attack() {
        //attack some prey
    }
}

class Parrot {
    private int speed;
    private String name;
    private String sound;

    public void talk() {
        //make a sound.
    }

    public void fly() {
        //fly away
    }
}
现在,使用继承可以做得更好:

class Animal {
    private int speed;
    private String name;
    private String sound;

    public void makeSound() {
        //make a sound.
    }
}

class Cat extends Animal {

    public void attack() {
        //attack some prey
    }
}

class Parrot extends Animal {

    public void fly() {
        //fly away
    }
}
在我的最后一个例子中,你可以看到猫和鹦鹉都有一个速度属性、一个名字和一个声音。他们也可以使用makeSound方法。此外,每种方法都有自己的方法

如果需要,还可以重写超类中的方法并添加额外的功能

@Override
public void someMethod() {
    super.someMethod();
    //extra functionality...
}

super.someMethod调用超类中的方法。如果您这样做,您也可以从super方法获得功能。如果不这样做,超类中的方法将永远不会执行。

这与继承有关

最好的解释方法是通过一个例子:

考虑这类车辆:

}

这是一个父类,具有任何类型车辆都可以具有的功能。这使它成为一个抽象类

下面是一个子类,它“继承”了车辆功能:

class Honda : Vehicle {
    float price = 3000.0;
}
还有一个品牌,这个更贵

class Ferrari : Vehicle {
    float price = 987654321.0;
}
所以现在当我们说:

Honda accord = new Honda();
我们得到一个本田的例子

Ferrari spider360 = new Ferrari();

它们都是车辆的子类,但各自有自己的属性,但属于同一父类车辆。

分别指定了更多和更少的类别。超类父类的子类子类通常可以做父类可以做的一切,并且包含所有相同类型的数据。但它不仅仅是父母。表示年龄和身高的类树可能有数据,但子类可能有更具体的数据。MapleTree可能是一个子类,并且具有额外的特定数据,例如糖浆味道,或者像get糖浆这样的操作,这在超类中是不可能的。超类更加灵活和通用,子类更加具体。谢谢。这是一个很好的解释。事实证明,我以前使用过很多子类,只是不确定它们的名称。
Ferrari spider360 = new Ferrari();