Forskellen mellem mavemusklertract-klasse og grænseflade i Java
Nøgleforskel mellem mavemusklertract-klasse og grænseflade i Java
- I Interface kan en klasse implementere flere grænseflader, hvorimod klassen kun kan arve én Abs.tract-klasse.
- In Interface har ingen adgangsmodifikatorer. Alt, der er defineret i Interface, antages at have en offentlig modifikator, hvorimod Abstract-klassen kan have en adgangsmodifikator.
- Interfacet kan ikke indeholde datafelter, hvorimod abstract-klassen kan have datafelter.
- Grænseflader er med til at definere en klasses perifere evner, hvorimod en abstract-klassen definerer identiteten af en klasse.
Hvad er en mavemuskeltract-klasse?
En klasse med mavemusklertract-nøgleordet i sin deklaration kaldes abstract-klasse. Abstract-klasser bør have nul eller flere mavemusklertract-metoder. dvs. metoder uden en krop. Den kan have flere konkrete metoder. Abstract-klasser giver dig mulighed for at oprette tegninger til konkrete klasser. Men den arvende klasse bør implementere abstract-metoden. Abstract-klasser kan ikke instantieres.
Vigtige grunde til brug af grænseflader
- Grænseflader bruges til at opnå abstraction.
- Designet til at understøtte dynamisk metodeopløsning under kørsel
- Det hjælper dig med at opnå løs kobling.
- Giver dig mulighed for at adskille definitionen af en metode fra arvehierarkiet
Vigtige grunde til at bruge mavemusklertract-klasse
- Abstract-klasser tilbyder standardfunktionalitet for underklasserne.
- Giver en skabelon til fremtidige specifikke klasser
- Hjælper dig med at definere en fælles grænseflade for dens underklasser
- Abstract-klassen tillader genbrug af kode.
Hvad er en grænseflade?
Grænsefladen er en blueprint, der kan bruges til at implementere en klasse. Grænsefladen indeholder ingen konkrete metoder (metoder, der har kode). Alle metoderne i en grænseflade er abs.tract-metoder. En grænseflade kan ikke instantieres. Klasser, der implementerer grænseflader, kan dog instantieres. Grænseflader indeholder aldrig instansvariabler, men de kan indeholde offentlige statiske slutvariabler (dvs. konstante klassevariabler).
Forskellen mellem grænseflade og abstract Klasse i Java
En mavemuskeltract-klassen tillader dig at lave funktionalitet, som underklasser kan implementere eller tilsidesætte, hvorimod en grænseflade kun tillader dig at angive funktionalitet, men ikke at implementere den. En klasse kan kun udvide én abstract-klassen, mens en klasse kan implementere flere grænseflader.
| Driftsparametre | grænseflade | AbstracT-klasse |
|---|---|---|
| Speed | Langsom | Hurtigt |
| Flere arv | Implementer flere grænseflader | Kun én mavemuskeltracT-klasse |
| Struktur | Abstract-metoder | Abstract & konkrete metoder |
| Hvornår skal du bruge det? | Fremtidig forbedring | For at undgå uafhængighed |
| Arv/ Implementering | En klasse kan implementere flere grænseflader | Klassen kan kun arve én Abstract-klasse |
| Standardimplementering | Mens du tilføjer nye ting til grænsefladen, er det et mareridt at finde alle implementere og implementere nydefinerede ting. | I tilfælde af mavemusklertract-klasse, kan du drage fordel af standardimplementeringen. |
| Adgangsmodifikatorer | Interfacet har ikke adgangsmodifikatorer. Alt defineret inde i grænsefladen antages at være offentlig modifikator. | Abstract-klassen kan have en adgangsmodifikator. |
| Hvornår skal du bruge det? | Det er bedre at bruge interface, når forskellige implementeringer kun deler metodesignatur. Polymorfisk hierarki af værdityper. | Det bør bruges, når forskellige implementeringer af samme slags deler en fælles adfærd. |
| Datafelter | grænsefladen kan ikke indeholde datafelter. | klassen kan have datafelter. |
| Multiple Inheritance Standard | En klasse kan implementere adskillige grænseflader. | En klasse arver kun én mavemuskeltract-klassen. |
| Implementering | En grænseflade er abstract så den ikke kan levere nogen kode. | En mavemuskeltract-klassen kan give komplet standardkode, som bør tilskrives. |
| Brug af adgangsmodifikatorer | Du kan ikke bruge adgangsmodifikatorer til metoden, egenskaber osv. | Du kan bruge mavemusklernetract-klasse, som indeholder adgangsmodifikatorer. |
| Brug | Grænseflader hjælper med at definere en klasses perifere evner. | En mavemuskeltract-klassen definerer identiteten af en klasse. |
| Definerede felter | Ingen felter kan defineres | En mavemuskeltract-klassen giver dig mulighed for at definere både felter og konstanter |
| Arv | En grænseflade kan arve flere grænseflader, men kan ikke arve en klasse. | En mavemuskeltract-klassen kan arve en klasse og flere grænseflader. |
| Konstruktør eller destruktorer | En grænseflade kan ikke erklære konstruktører eller destruktorer. | En mavemuskeltract-klassen kan deklarere konstruktører og destruktorer. |
| Grænse for udvidelser | Det kan udvide et vilkårligt antal grænseflader. | Den kan kun forlænge én klasse eller én mavemuskeltract klasse ad gangen. |
| Abstract-søgeord | I en mavemuskeltract interface-nøgleordet er valgfrit til at deklarere en metode som en abstract. | I en mavemuskeltract-klassen, mavemusklernetract-nøgleordet er obligatorisk for at deklarere en metode som en abstract. |
| Klassetype | En grænseflade kan kun have offentlige abstract-metoder. | En mavemuskeltract-klassen har beskyttede og offentlige mavemusklertract-metoder. |
Eksempelkode til grænseflade og ABStract Klasse i Java
Følgende er et eksempelkode til at oprette en grænseflade og ABStract-klasse i Java
Interface syntaks
interface name{
//methods
}
Java Eksempel på grænseflade:
interface Pet {
public void test();
}
class Dog implements Pet {
public void test() {
System.out.println("Interface Method Implemented");
}
public static void main(String args[]) {
Pet p = new Dog();
p.test();
}
}
Abstract-klassesyntaks
abstract class name{
// code
}
AbstracEksempel på t-klasse:
abstract class Shape {
int b = 20;
abstract public void calculateArea();
}
public class Rectangle extends Shape {
public static void main(String args[]) {
Rectangle obj = new Rectangle();
obj.b = 200;
obj.calculateArea();
}
public void calculateArea() {
System.out.println("Area is " + (b * b));
}
}

