/* * Olio-ohjelmoinnin perusteet I. * * Abstraktista nisäkkäästä peritty konkreettinen ihmistä mallintava luokka, * joka osaa tervehtiä. * * Jorma Laurikkala (jorma.laurikkala@tuni.fi). * * Viimeksi muutettu 22.1.2020. * */ public class Ihminen extends Nisakas implements Tervehtiva { /* * Ilmentymäattribuutit. * */ private String henkilötunnus; /* * Rakentajat. * */ public Ihminen() { // Kutsutaan yliluokan rakentajaa. super(true, 60); henkilötunnus("abcdef-1234"); } /* * Parametrillinen rakentaja, jossa kissalle asetetaan ulkoisen tahon * määrittelemä tieto elossa olemisesta (e), paino (p) ja henkilötunnus. * Annettu arvo asetetaan vain, jos se on sallittu. */ public Ihminen(boolean e, double p, String hetu) { // Kutsutaan yliluokan rakentajaa. super(e, p); // Koodia lyhennetty aksessoreita kutsumalla, // jolloin tarvitaan vähemmän if-lauseita. henkilötunnus(hetu); } /* * Aksessorit. * */ public String henkilötunnus() { return henkilötunnus; } public void henkilötunnus(String hetu) { if (hetu != null && hetu.charAt(6) == '-') henkilötunnus = hetu; } /* * Korvatut ilmentymametodit. * */ /* * Karkea sääntö ihmisen koon arviointiin. */ @Override public boolean onkoIso() { // Korvataan peritty metodi kokonaisuudessaan: yliluokan versiota ei kutsuta. return paino() > 100; } /* * Toteutetut metodit. * */ /* * Ihmismäistä syömistä. Yliluokasta perityn metodin toteutus. */ @Override public void syö() { System.out.println("Syön kuin ihminen..."); puhu(); } /* * Ihmismäinen moi. Rajapinnan metodin toteutus. */ public void moikkaa() { System.out.println("Moikka!"); } /* * Ihmisen muut ilmentymämetodit. * */ /* Tuotetaan puhetta. */ public void puhu() { System.out.println("Seli, seli, seli..."); } }