我一直在想这个真的很多。我听到很多人提到他们,但不知道他们究竟是什么。我假设它们在所有基于类的语言中都是相同的(如果不是,那么它们在Java中是什么?)。什么是子类和超类?
对不起,我的无知,但我正在学习Java和我的书只解释了基础知识。
我一直在想这个真的很多。我听到很多人提到他们,但不知道他们究竟是什么。我假设它们在所有基于类的语言中都是相同的(如果不是,那么它们在Java中是什么?)。什么是子类和超类?
对不起,我的无知,但我正在学习Java和我的书只解释了基础知识。
子类扩展超类。他们使用他们超类的一些或全部功能,但也有他们自己的一些独特的功能。两个不同的类可以扩展相同的超类并共享其功能。这样,您就不必将超类中的代码复制到两个子类中。
例如:假设你有两个班级,一只猫和一只鹦鹉。他们是这样的:
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
}
}
你可以在我的最后一个例子见猫和鹦鹉都有一个速度统计,一个名字:
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
}
}
现在,你可以使用继承做得更好和一个声音。他们都可以使用makeSound()方法。另外,每个也都有自己的方法。
如果需要,还可以重写超类中的方法并添加额外的功能。
@Override
public void someMethod() {
super.someMethod();
//extra functionality...
}
super.someMethod()调用超类中的方法。如果你这样做,你也可以从超级方法中获得功能。如果你不这样做,超类中的方法永远不会执行。
谢谢。这是一个很好的解释。事实证明,我之前使用过很多子类,只是不确定他们的名字。 –
这与继承有关。
解释这一点的最好办法是通过一个例子:
考虑这个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
相同的父类。
分别有越来越少的指定类。父类(父类)的子类(子类)可以(通常)执行父类可以做的所有事情,并且包含所有相同类型的数据。但它不仅仅是父母。类树表示可能具有诸如年龄和高度之类的数据,但是子类可能具有更具体的事物。 MapleTree可能是一个子类,并且具有额外的特定数据,比如“糖浆美味”,或者像“获得糖浆”这样的超类不可能的操作。超类更加灵活通用,子类更具体。 – Lucas