Kovariantne tagastustüüp
Ilme
See artikkel vajab toimetamist. (Veebruar 2013) |
Objektorienteeritud programmeerimises on võimalik alamklassides meetodeid üle kirjutada. Kui muuta ülekirjutatud meetodi tagastustüüpi, siis seda tehnikat nimetatakse kovariantseks tagastustüübiks.
Kovariantsed tagastustüübid on Javas lubatud alates JDK5.0 versioonist, seega järgnev näide ei töötaks varasemates versioonides:
class A {
}
class B extends A {
}
class C {
A getFoo() {
return new A();
}
}
class D extends C {
B getFoo() {
return new B();
}
}
Tavaliselt kovariantse tagastustüübi puhul peab alamklassi meetodis deklareeritav tagastustüüp jääma samaks, või olema üks selle tagastustüübi alamklassidest, järgides Liskovi asendusprintsiipi.