Betonklasse i Java

1. Introduktion

I denne hurtige vejledning vi diskuterer udtrykket "konkret klasse" i Java.

Først definerer vi udtrykket. Derefter ser vi, hvordan det adskiller sig fra grænseflader og abstrakte klasser.

2. Hvad er en betonklasse?

En konkret klasse er en klasse, som vi kan oprette en forekomst af ved hjælp af ny nøgleord.

Med andre ord er det en fuld implementering af dens plan. En konkret klasse er færdig.

Forestil dig f.eks. En Bil klasse:

public class Car {public String honk () {return "bip!"; } public String drive () {return "vroom"; }}

Fordi alle dens metoder er implementeret, kalder vi det en konkret klasse, og vi kan instantiere det:

Bilbil = ny bil ();

Nogle eksempler på konkrete klasser fra JDK er HashMap, HashSet, ArrayListog LinkedList.

3. Java Abstraction vs. Concrete Classes

Ikke alle Java-typer implementerer dog alle deres metoder. Denne fleksibilitet, også kaldet abstraktion, giver os mulighed for at tænke mere generelt over det domæne, vi prøver at modellere.

I Java kan vi opnå abstraktion ved hjælp af grænseflader og abstrakte klasser.

Lad os se bedre på konkrete klasser ved at sammenligne dem med disse andre.

3.1. Grænseflader

En grænseflade er en plan for en klasse. Eller med andre ord, det er en samling af ikke-implementerede metodesignaturer:

interface Driveable {void honk (); ugyldigt drev (); }

Bemærk, at det bruger interface nøgleord i stedet for klasse.

Fordi Kan køres har uimplementerede metoder, kan vi ikke instantiere det med ny nøgleord.

Men, konkrete klasser som Bil kan implementere disse metoder.

JDK giver et antal grænseflader som f.eks Kort, Listeog Sæt.

3.2. Abstrakte klasser

En abstrakt klasse er en klasse, der har uimplementerede metoder, selvom det faktisk kan have begge dele:

offentlig abstrakt klasse Vehicle {public abstract String honk (); public String drive () {return "zoom"; }}

Bemærk, at vi markerer abstrakte klasser med nøgleordet abstrakt.

Igen, siden Køretøj har en uimplementeret metode, tut, kan vi ikke bruge ny nøgleord.

Nogle eksempler på abstrakte klasser fra JDK er AbstraktKort og AbstraktListe.

3.3. Betonklasser

I modsætning, konkrete klasser har ingen uimplementerede metoder. Uanset om implementeringerne er arvet eller ej, så længe hver metode har en implementering, er klassen konkret.

Betonklasser kan være så enkle som vores Bil eksempel tidligere. De kan også implementere grænseflader og udvide abstrakte klasser:

offentlig klasse FancyCar udvider køretøjsredskaber, der kan køres {public String honk () {return "bip"; }}

Det FancyCar klasse giver en implementering for tut og det arver implementeringen af køre fra Køretøj.

Som sådan har den ingen uimplementerede metoder. Derfor kan vi oprette en FancyCar klasse instans med ny nøgleord.

FancyCar bil = ny FancyCar ();

Eller, enkelt sagt, alle klasser, der ikke er abstrakte, kan vi kalde konkrete klasser.

4. Resume

I denne korte vejledning lærte vi om konkrete klasser og deres specifikationer.

Derudover viste vi forskellene mellem grænseflader og konkrete og abstrakte klasser.