java-从SuperClass强制子类使用@Override方法. SuperClass中的方法必须具有主体
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-从SuperClass强制子类使用@Override方法. SuperClass中的方法必须具有主体,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2257字,纯文字阅读大概需要4分钟。
内容图文
![java-从SuperClass强制子类使用@Override方法. SuperClass中的方法必须具有主体](/upload/InfoBanner/zyjiaocheng/681/fca47d63814140258ea66790cb9e3665.jpg)
我想从SuperClass强制SubClasses到@Override方法.
SuperClass中的方法不能是抽象的,因为我想提供一些基本的实现.
这是我的代码示例:
public abstract class GenericModel<T extends GenericModel> {
long id, counter;
public String methodToBeOverridenInSubClass(String name) {
// some basic implementation
// rest details will be provided by subclass
return name;
}
}
public class SubClass extends GenericModel<SubClass> {
@Override
public String methodToBeOverridenInSubClass(String name) {
switch (name) {
case "name": return "Real name";
default: super.methodToBeOverridenInSubClass(name);
}
}
}
这篇文章很有趣:
MustOverrideException and MethodNotOverridenException
请给我一些帮助
解决方法:
也许您正在寻找的内容可以通过Template method pattern解决.
在其中创建一个实现了一个方法的父类,该方法描述了一个调用另一个方法(步骤)的过程.这些步骤是抽象的,因此它们由子类实现.
来自维基百科的示例:
/**
* An abstract class that is common to several games in
* which players play against the others, but only one is
* playing at a given time.
*/
abstract class Game {
protected int playersCount;
abstract void initializeGame();
abstract void makePlay(int player);
abstract boolean endOfGame();
abstract void printWinner();
/* A template method : */
public final void playOneGame(int playersCount) {
this.playersCount = playersCount;
initializeGame();
int j = 0;
while (!endOfGame()) {
makePlay(j);
j = (j + 1) % playersCount;
}
printWinner();
}
}
//Now we can extend this class in order
//to implement actual games:
class Monopoly extends Game {
/* Implementation of necessary concrete methods */
void initializeGame() {
// Initialize players
// Initialize money
}
void makePlay(int player) {
// Process one turn of player
}
boolean endOfGame() {
// Return true if game is over
// according to Monopoly rules
}
void printWinner() {
// Display who won
}
/* Specific declarations for the Monopoly game. */
// ...
}
class Chess extends Game {
/* Implementation of necessary concrete methods */
void initializeGame() {
// Initialize players
// Put the pieces on the board
}
void makePlay(int player) {
// Process a turn for the player
}
boolean endOfGame() {
// Return true if in Checkmate or
// Stalemate has been reached
}
void printWinner() {
// Display the winning player
}
/* Specific declarations for the chess game. */
// ...
}
内容总结
以上是互联网集市为您收集整理的java-从SuperClass强制子类使用@Override方法. SuperClass中的方法必须具有主体全部内容,希望文章能够帮你解决java-从SuperClass强制子类使用@Override方法. SuperClass中的方法必须具有主体所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。