我真的很想知道这件事。我听说很多人提到它们但不知道它们到底是什么。我假设它们在所有基于类的语言中都是相同的(如果没有,那么它们在Java中是什么?)。
对不起我的无知,但我正在学习Java,而我的书只解释了基础知识。
答案 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
。