我们可以在Java接口中定义一个类吗?

是的,您可以在接口内定义一个类。通常,如果接口的方法使用此类,并且在其他地方不使用它,则将在接口内声明一个类。

示例

interface Library {
   void issueBook(Book b);
   void retrieveBook(Book b);
   public class Book {
      int bookId;
      String bookName;
      int issueDate;
      int returnDate;
   }
}
public class Sample implements Library {
   public void issueBook(Book b) {
      System.out.println("Book Issued");
   }
   public void retrieveBook(Book b) {
      System.out.println("Book Retrieved");
   }
   public static void main(String args[]) {
      Sample obj = new Sample();
      obj.issueBook(new Library.Book());
      obj.retrieveBook(new Library.Book());
   }
}

输出结果

Hello welcome to nhooo

如果我们需要提供接口的默认实现,我们将在接口内部定义一个类,如下所示:

示例

interface Library {
   void issueBook(Book b);
   void retrieveBook(Book b);
   public class Book implements Library {
      int bookId;
      String bookName;
      int issueDate;
      int returnDate;
      public void issueBook(Book b) {
         System.out.println("book issued");
      }
      public void retrieveBook(Book b) {
         System.out.println("book retrieved");
      }
   }
}
public class Sample {
   public void demo() {
      System.out.println("Hello welcome to nhooo");
   }
   public static void main(String args[]) {
      Sample obj = new Sample();
      obj.demo();
   }
}