让我们假设我们有一个像这样的抽象类:
public abstract class Foo {
public Foo (boolean bar) {...}
}
我们还有一个扩展类Foo
:
public class FooThread extends Foo {}
顾名思义,FooThread
将是一个线程,因此应该实现 Runnable。
implements Runnable
问题是:就可扩展性和可读性(或任何其他原因)而言,最佳位置是什么?
一些替代方案可能是:
1)插入implements
抽象类:
public abstract class Foo implements Runnable {}
- 看抽象类时容易理解
- 扩展性较差
2)插入implements
扩展类:
public class FooThread extends Foo implements Runnable {}
- 抽象类中没有关于线程功能的提示
- 更具扩展性
3) 插入implements
扩展类并run()
作为抽象方法添加到抽象类:
public class FooThread extends Foo implements Runnable {}
public abstract class Foo {
public Foo (boolean bar) {...}
public abstract void run();
}
- 查看抽象类时的可读性
- 可扩展(嗯,至少更灵活一点)
- 抽象类中的抽象方法有点多余
- “丑陋的”
是否有放置implements Runnable
或implements Xyz
一般的最佳做法?最早还是在真正实现接口的类中?还是真的取决于我们想要什么?你更喜欢什么?
谢谢您的意见!