abstract class Animal {
public abstract communicate(sentence: string): void;
public abstract communicate(notes: string[]): void;
}
class Human extends Animal {
public communicate(sentence: string): void {
// Do stuff
}
}
class Bird extends Animal {
public communicate(notes: string[]): void {
// Do stuff
}
}
注意:参数的类型可以是完全不同的类型,与本例不同。
正如@DavidSherret所说,子类必须实现所有抽象类重载,而不仅仅是其中一个。因此,您将无法使用抽象类重载来完成您想要的任务。
由于您希望使bird
和human
具有不同的Communication()
参数类型(由编译器强制执行),所以我将使用带有type constraint的泛型类型参数:
abstract class Animal<C extends string | string[]> {
public abstract communicate(communication: C): void;
}
class Human extends Animal<string> {
public communicate(sentence: string): void { }
}
class Bird extends Animal<string[]> {
public communicate(notes: string[]): void { }
}
class Bynar extends Animal<boolean> { // Error: 'boolean' does not satisfy the constraint 'string | string[]'.
public communicate(bit: boolean): void { }
}
const human = new Human();
human.communicate("hello"); // OK
human.communicate(["hello"]); // Error
const bird = new Bird();
bird.communicate("hello"); // Error
bird.communicate(["hello"]); // OK
提示:这里也可以使用TS2.3默认类型参数。
大家好,我有这个主课堂 错误:(42,8)错误:Home不是抽象的,并且不会覆盖OnFragmentInteractionListener中的onFragmentInteract(String)抽象方法 我创建了一个导航抽屉,并希望有一个新的片段来显示另一个家庭活动的内容。 Android Studio告诉我做个家。类抽象或实现抽象方法。 里面: 我那样做了,但是什么也没有改变。我不能让home类
为什么我从下面的代码中得到这个编译错误消息? (程序根据键盘上按下的箭头键,在4个方向上移动箭头:d) Direction.java:41:错误:DirectionBoard。DirectionListener不是抽象的,并且不会覆盖KeyListener中的抽象方法keyReleated(KeyEvent)
这似乎是一个基本问题。但在采访前需要澄清。 我在抽象类中有一个非抽象方法。它的具体类重写了该方法。但我想调用父类的原始方法来调用,而不是重写方法。有什么办法吗? 据我所知,没有办法调用原始方法?
有人可以向我解释为什么它总是给我这个错误 错误:MyPanel不是抽象的,并且不重写ActionListener公共类MyPanel extends JPanel实现ActionListener中的抽象方法actionPerformed(ActionEvent){ 我想我做的一切都是对的,我不知道我做错了什么,这段代码用于测试使图像水平移动 这是我的密码 Main.java 我的框架。Java语言
我的类KTree正在扩展抽象类GraphClass,但无法重写GraphClass中定义的一个方法。 原始方法添加(E E,V V,V v1)在界面无向图中定义 在类中,addEdge(E E,V V,V v1)抛出错误 “KTree”中的“addEdge(E,V,V)”与“GraphClass”中的“addEdge(E,V,V)”冲突;两种方法具有相同的擦除,但都不重写另一种方法 KTree中的
不能定义 抽象类也不行 有什么其他的方法用来定义静态成员方法