PLDB
Languages Features Calendar CSV Lists Blog About Sponsor Add Language
GitHub icon

Interfaces

Interfaces

Interfaces are a feature.

Aka Protocol pattern.


Languages with Interfaces include Java, Swift, TypeScript, Kotlin, Objective-C, 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:
// https://www.typescriptlang.org/docs/handbook/interfaces.html interface SquareConfig { color?: string; width?: number; }
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 Objective-C:
@protocol Printing -(void) print; @end
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 }
integers-feature.html 路 interface-feature.html 路 lazy-evaluation-feature.html

View source

PLDB - Build the next great programming language 路 v2022 Day 33 Docs Build Acknowledgements Traffic Today Traffic Trends Mirrors GitHub feedback@pldb.com