Languages Features Calendar About Lists Add Language
GitHub icon



Interfaces are a language feature.

Aka Protocol pattern.

Languages with Interfaces include Java, Swift, TypeScript, Objective-C, Kotlin, GraphQL

Example from Java:

interface MyInterface{ /* This is a default method so we need not * to implement this method in the implementation * classes */ default void newMethod(){ System.out.println("Newly added default method"); } /* Already existing public and abstract method * We must need to implement this method in * implementation classes. */ void existingMethod(String str); } public class Example implements MyInterface{ // implementing abstract method public void existingMethod(String str){ System.out.println("String is: "+str); } public static void main(String[] args) { Example obj = new Example(); //calling the default method of interface obj.newMethod(); //calling the abstract method of interface obj.existingMethod("Java 8 is easy to learn"); } }

Example from Swift:

protocol MyProtocol { init(parameter: Int) var myVariable: Int { get set } var myReadOnlyProperty: Int { get } func myMethod() func myMethodWithBody() } extension MyProtocol { func myMethodWithBody() { // implementation goes here } }

Example from TypeScript:

// interface SquareConfig { color?: string; width?: number; }

Example from Objective-C:

@protocol Printing -(void) print; @end

Example from Kotlin:

interface Named { val name: String } interface Person : Named { val firstName: String val lastName: String override val name: String get() = "$firstName $lastName" }

Example from GraphQL:

interface Character { id: ID! name: String! friends: [Character] appearsIn: [Episode]! } type Human implements Character { id: ID! name: String! friends: [Character] appearsIn: [Episode]! starships: [Starship] totalCredits: Int } type Droid implements Character { id: ID! name: String! friends: [Character] appearsIn: [Episode]! primaryFunction: String }

Article source

PLDB - Build the next great programming language. v5.0.0 - Acknowledgements · Email · GitHub