title: Why concrete method in interface must be implemented if the interface is written in kotlin
body: <p>I have written an interface in kotlin with a concrete method and the class which implements it is asking about overriding it. If I write the same interface in java it works fine. May I know what's wrong with it? </p>
  
  <p>In kotlin</p>
  
  <pre><code>interface BottomSheet {
  
  companion object{
  
      val BOTTOMSHEET_ADAPTER:String="BOTTOMSHEET_ADAPTER"
      val FILTER_ADAPTER:String="FILTER_ADAPTER"
  
  }
  
  fun getBottomSheetAdapterInstance(context: Context?): BottomSheetAdapter? {
      return BottomSheetAdapter(context)
  }
  </code></pre>
  
  <p>}</p>
  
  <p>in Java </p>
  
  <pre><code>public interface BottomSheetJava {
  
  default BottomSheetAdapter getBottomSheetAdapterInstance(Context context){
      return new BottomSheetAdapter(context);
  }
  </code></pre>
  
  <p>}</p>
  
  <p>in gradle </p>
  
  <pre><code>compileOptions {
      sourceCompatibility JavaVersion.VERSION_1_8
      targetCompatibility JavaVersion.VERSION_1_8
  }
  kotlinOptions {
      jvmTarget = "1.8"
  }
  </code></pre>