离开方法abstract:
abstract class A {
abstract void doStuff();
}
class B extends A {
void doStuff() {
// stuff
}
}
Run Code Online (Sandbox Code Playgroud)
注意...
如果类包含抽象方法,则必须声明类本身
abstract
无法构造抽象类(因此new A()会出错,但new B()会很好),并且子类需要实现所有抽象方法,除非它们也是抽象的.
abstract class A {
abstract void doStuff();
}
abstract class B extends A {
// This is fine since B is abstract
}
class C extends A {
// This is an error since doStuff() isn't implemented
}
Run Code Online (Sandbox Code Playgroud)
使用抽象类,您可以混合使用抽象和常规方法:
abstract class A {
abstract void doStuff();
void doOtherStuff() {
// Subclasses don't need to implement this
}
}
Run Code Online (Sandbox Code Playgroud)
如果所有方法都是抽象的,那么使用a可能更有意义interface,因为类实现了多个接口:
interface DoesStuff {
void doStuff();
}
interface DoesOtherStuff {
void doOtherStuff();
}
class B implements DoesStuff, DoesOtherStuff {
void doStuff() {
// stuff
}
void doOtherStuff() {
// other stuff
}
}
Run Code Online (Sandbox Code Playgroud)
注:在接口中的方法是自动abstract和public,不像在类的方法,这是默认包私人和不是抽象的.
| 归档时间: |
|
| 查看次数: |
531 次 |
| 最近记录: |