Abstraktit luokat
Määrittäkää abstrakteja luokkia ja metodeja, ymmärtäkää, miksei niistä voi luoda instansseja, ja nähkää, miten aliluokat täydentävät suunnittelun.
Abstraktit luokat on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/3. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 3 oppituntia.
Mikä on abstrakti luokka?
Abstrakti luokka määrittelee yhteisen käsitteen ja voi jättää joidenkin metodien rungon määrittelemättä. Se voi sisältää myös tavallisia, koodia sisältäviä metodeja. Ajatelkaa sitä mallina, jonka aliluokat täyttävät puuttuvilta osin.
Koodi: instanssia ei voi luoda
Abstrakteista luokista ei voi luoda instansseja suoraan. Ne voivat silti sisältää tavallisia metodeja, jotka kaikki aliluokat perivät.
public class Main {
// Abstract class with one abstract method and one concrete method
static abstract class Animal {
abstract void speak(); // must be implemented by subclasses
void info() { // concrete method allowed
System.out.println("I am an animal.");
}
}
public static void main(String[] args) {
// Animal a = new Animal(); // Uncommenting would not compile: cannot instantiate abstract class
System.out.println("You cannot create an Animal directly if it is abstract.");
}
}
Miksi abstrakteja luokkia käytetään?
Niihin voidaan koota yhteinen koodi yhteen paikkaan, ja ne pakottavat jokaisen aliluokan toteuttamaan tärkeät metodit. Käyttäkää niitä, kun osa toiminnasta on yhteistä mutta osa vaihtelee konkreettisten tyyppien välillä.
Koodi: abstraktin metodin toteuttaminen
Aliluokkien on toteutettava abstraktit metodit. Abstraktin luokan konkreettiset metodit periytyvät, ja niitä voidaan käyttää uudelleen.
public class Main {
static abstract class Animal {
abstract void speak();
void info() {
System.out.println("I am an animal.");
}
}
static class Dog extends Animal {
// Must implement speak()
void speak() {
System.out.println("Woof!");
}
}
public static void main(String[] args) {
Dog d = new Dog(); // allowed: Dog is concrete
d.info(); // inherited concrete method
d.speak(); // Dog's implementation
}
}
Säännöt ja yhdistelmät
Säännöt: abstrakti luokka voi sisältää kenttiä, konstruktoreita ja konkreettisia metodeja. Aliluokasta tulee konkreettinen vasta, kun se on toteuttanut kaikki abstraktit metodit; muuten sekin on abstrakti.
Koodi: abstraktius ja polymorfismi
Abstraktit luokat toimivat hyvin yhdessä polymorfismin kanssa. Koodi voi käyttää abstraktia tyyppiä, ja kukin aliluokka tarjoaa oikean toiminnan.
public class Main {
static abstract class Animal {
abstract void speak();
}
static class Dog extends Animal {
void speak() { System.out.println("Woof!"); }
}
static class Cat extends Animal {
void speak() { System.out.println("Meow!"); }
}
public static void main(String[] args) {
// Polymorphism through abstract base type
Animal[] pets = { new Dog(), new Cat() };
for (int i = 0; i < pets.length; i = i + 1) {
pets[i].speak(); // each subclass provides its own behavior
}
}
}
Abstraktin luokan tarkistus
Pikatarkistus: Mikä abstrakteja luokkia koskeva väite on oikein?
Kertaus
Kertaus: Käyttäkää abstrakteja luokkia koodin jakamiseen ja tärkeiden metodien edellyttämiseen. Niistä ei voi luoda instansseja suoraan, mutta aliluokat täydentävät niiden toiminnan.
Opi Java tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 104
- Oppitunnit
- 374
Usein kysytyt kysymykset
Onko oppitunti ”Abstraktit luokat” ilmainen?
Kyllä – oppitunnin ”Abstraktit luokat” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 3 oppituntia.
Mitä opin oppitunnilla ”Abstraktit luokat”?
Määrittäkää abstrakteja luokkia ja metodeja, ymmärtäkää, miksei niistä voi luoda instansseja, ja nähkää, miten aliluokat täydentävät suunnittelun. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/3.
Kuinka kauan ”Abstraktit luokat”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?
Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.