KAN gränssnittet ha icke-abstrakta metoder?
KAN gränssnittet ha icke-abstrakta metoder?

Video: KAN gränssnittet ha icke-abstrakta metoder?

Video: KAN gränssnittet ha icke-abstrakta metoder?
Video: Java Interview Questions #56 - Can an abstract class have both abstract and non-abstract methods? 2024, November
Anonim

Gränssnittsmetoder är per definition offentliga och abstrakt , så du kan inte har icke - abstrakta metoder i din gränssnitt . I Java, gränssnittsmetoder är offentliga och abstrakt som standard. Så det första alternativet är dålig praxis. Poängen är att du burk inte använda icke - abstrakta metoder insidan av gränssnitt , för att de är abstrakt som standard.

Kan ett gränssnitt dessutom ha abstrakta metoder?

Ett gränssnitt är som en "rent" abstrakt klass. Klassen och allt metoder är abstrakt . Ett abstrakt klass kan ha genomförs metoder men själva klassen kan inte instansieras (användbart för arv och efter DRY). Om du implementerar Gränssnitt då måste du implementera metoder i gränssnitt.

Kan abstrakt klass också ha icke-abstrakta metoder? Ja vi kan ha ett abstrakt klass utan Abstrakta metoder eftersom båda är oberoende begrepp. Deklarerar a klass abstrakt betyder att det burk inte instansieras på egen hand och burk endast underklassas. Deklarerar a metod abstrakt betyder att Metoden kommer definieras i underklassen.

Kan vi dessutom definiera metoder i gränssnittet?

Som en klass, en gränssnitt kan ha metoder och variabler, men metoder deklareras i en gränssnitt är som standard abstrakta (endast metod signatur, ingen text). Gränssnitt specificera vad en klass måste do och inte hur. Om en klass implementerar detta gränssnitt , då det burk användas för att sortera en samling.

Måste alla metoder i ett gränssnitt implementeras?

Ja, det är obligatoriskt genomföra alla de metoder i en klass som implementerar en gränssnitt om inte och tills den klassen är en abstrakt klass. Du ha två val: - genomföra varje metod krävs av gränssnitt eller - förklara den saknade metoder abstrakt i din klass.

Rekommenderad: