java - 使用匿名类实例化了一个抽象类之后,如何重写其中的抽象方法并调用?
伊谢尔伦
伊谢尔伦 2017-04-18 10:47:54
0
2
595
public abstract class Rhythm {

    /**
     * @return duration between {@linkplain Note} in milliseconds
     */
    public abstract long getDuration();

    public void perform() {
        long duration = getDuration();
        try {
            Thread.sleep(duration);
        } catch (InterruptedException ie) {
            Thread.currentThread().interrupt();
            throw new RuntimeException(ie);
        }
    }
}

--------------------------------------------------------------------

@Override public void play(Rhythm rhythm, Note note, NoteCallback noteCallback){
    rhythm.getDuration();//想在这里重写getDuration方法,如何做到?
    rhythm.perform();
    note.getNoteValue();
    noteCallback.notePlayed(note);
}

--------------------------------------------------------------------

//重写成如下形式
  @Override public long getDuration(){
      return (expectedMs);
   }

代码附上。在play() 方法中如何直接重写Rhythm类中的抽象方法getDuration()呢? 创建rhythm对象是可以用匿名类的方法实例化的,那是实例化之后 想调用一个重写的getDuration()方法,有什么办法么?在不引入子类继承的前提下。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

모든 응답(2)
刘奇

Java는 이를 수행할 수 없지만 내부 클래스를 사용하여 위장하여 이 요구 사항을 달성할 수 있습니다

으아아아 으아아아
刘奇

하면 안 되겠죠? 자바를 할 수 있다면 동적 언어가 아닐까요?

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿