Ведь методы из интерфейса переопределены в классе Violin...
package com.javarush.task.task16.task1605;
import java.util.Date;
public class Solution extends Thread{
public static int delay = 1000;
public static void main(String[] args) {
Thread violin = new Thread(new Violin("Player"));
violin.start();}
public static void sleepNSeconds(int n) {
try {
Thread.sleep(n * delay);
} catch (InterruptedException e) {e.printStackTrace();}
}
public interface MusicalInstrument extends Runnable {
Date startPlaying();
Date stopPlaying();}
public static class Violin implements MusicalInstrument {
private String owner;
private long len;
public Violin(String owner) {
this.owner = owner; }
public Date startPlaying() {
System.out.println(this.owner + " is starting to play");
return new Date();}
public Date stopPlaying() {
System.out.println(this.owner + " is stopping playing");
return new Date();}
public void run(){
startPlaying();
sleepNSeconds(1);
stopPlaying();
len = stopPlaying().getTime() - startPlaying().getTime();
System.out.println("Playing " + len + " ms");
}
}
}