A functional interface in Java is an interface that has only one abstract method. It can have multiple default or static methods, but it must have exactly one abstract method. Functional interfaces are used to enable functional programming constructs like lambda expressions and method references in Java. They serve as a foundation for the Java 8 feature known as "functional programming" or "lambda expressions."