什么是次级和超级?

时间:2014-01-28 19:49:20

标签: class

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

对不起我的无知,但我正在学习Java,而我的书只解释了基础知识。

2 个答案:

答案 0 :(得分:0)

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

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

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方法获得功能。如果不这样做,则永远不会执行超类中的方法。

答案 1 :(得分:0)

这与继承有关。

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

考虑这个Vehicle类:

class Vehicle {

int doors = 4;
int wheels = 4;
bool rolling = false;

int getDoors()
{
    return this->doors;
}

int getWheels()
{
    return this->wheels;
}

float cost()
{
    return price;
}

bool isRolling()
{
    return this->rolling;
}

}

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

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

class Honda : Vehicle {
    float price = 3000.0;
}

和另一个品牌(这个更贵)

class Ferrari : Vehicle {
    float price = 987654321.0;
}

所以现在我们说:

Honda accord = new Honda();

我们得到一个本田实例。

Ferrari spider360 = new Ferrari();

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

相关问题