# abstract class和interface
```java=
interface Doable {
public void doSomething (String s);
}
```
**Which two class definitions compile?**
### A.
```java=
public abstract class Task implements Doable {
public void doSomethingElse(String s) {
}
}
```
### B.
```java=
public abstract class Work implements Doable {
public abstract void doSomething(String s) {
}
public void doYourThing(Boolean b) {
}
}
```
### C.
```java=
public class Job implements Doable {
public void doSomething(Integer i) {
}
}
```
### D.
```java=
public class Action implements Doable {
public void doSomething(Integer i) {
}
public String doThis(Integer j) {
}
}
```
### E.
```java=
public class Do implements Doable {
public void doSomething(Integer i) {
}
public void doSomething(String s) {
}
public void doThat(String s) {
}
}
```
:::warning
#### A. doSomethingElse與doSomething不同方法,但是本身是abstract class,所以可以有未實作的方法
#### B. 抽象方法不能有實作區塊
#### C. doSomething(Integer i)和doSomething (String s)是不同方法,不是抽象類別的話必須要實作Doable的doSomething (String s)
#### D. 跟C.原因一樣
#### E. 有實作Doable的doSomething(String s)
- [x] **Answer:AE**
:::
###### tags: `ocpjp`