Vererbung und Polymorphismus in Java
1. die Vorstellung
Inheritance & polymorphism : das ist die so wesentliche Begriff in Java, die Sie beherrschen müssen
2. Class, Constructor, instance
Sie sollen vor dem Starten mit Inheritance im Java klar die Class, constructor und instance kennen. Wir sehen class Person, die die Information wie Name, Geburtsjahr, Geburtsort.
Person.java
package org.o7planning.tutorial.inheritance.basic;
public class Person {
// Der Feld Name - die Information von dem Name.
private String name;
// Der Feld bornYear - Die Information von dem Geburtsjahr
private Integer bornYear;
// Der Feld placeOfBirth - Die Information von dem Geburtsort.
private String placeOfBirth;
// Constructor hat 3 Parameter.
// Der Zweck ist die Anweisung der Wert für die Felder vom Person.
// Den Name, das Geburtsjahr und -Ort einer Person.
public Person(String name, Integer bornYear, String placeOfBirth) {
this.name = name;
this.bornYear = bornYear;
this.placeOfBirth = placeOfBirth;
}
// Constructor hat 2 Parameter.
// Der Zweck ist die Anweisung der Wert für die Felder Name und Geburtsjahr einer Person.
// Das Geburtsort wird nicht angewiesen
public Person(String name, Integer bornYear) {
this.name = name;
this.bornYear = bornYear;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getBornYear() {
return bornYear;
}
public void setBornYear(Integer bornYear) {
this.bornYear = bornYear;
}
public String getPlaceOfBirth() {
return placeOfBirth;
}
public void setPlaceOfBirth(String placeOfBirth) {
this.placeOfBirth = placeOfBirth;
}
}
PersonDemo.java
package org.o7planning.tutorial.inheritance.basic;
public class PersonDemo {
public static void main(String[] args) {
// Das Objekt: Thomas Edison.
Person edison = new Person("Thomas Edison", 1847);
System.out.println("Info:");
System.out.println("Name: " + edison.getName());
System.out.println("Born Year: " + edison.getBornYear());
System.out.println("Place Of Birth: " + edison.getPlaceOfBirth() );
// Das Objekt: Bill Gates
Person billGates = new Person("Bill Gate", 1955, "Seattle, Washington");
System.out.println("Info:");
System.out.println("Name: " + billGates.getName());
System.out.println("Born Year: " + billGates.getBornYear());
System.out.println("Place Of Birth: " + billGates.getPlaceOfBirth());
}
}
Unterscheidung zwischen Class, constructor und Instance:
Class Person bezeichnet die Personclass, es ist etwas abstrakt, aber es versorgt die Informationclass wie Name, Geburtsjahr, Geburtsort.
Constructor - sogenannte "Initialisierungsmethode"
Constructor - sogenannte "Initialisierungsmethode"
- Constructor haben immer den gleichen Name wie Class
- Ein Class hat ein oder viel Constructor.
- Constructor hat ein oder kein Parameter. Die Constructor, die kein parameter hat, ist Standardconstructor.
- Constructor ist ein Weg für die Erstullung eines Instance einer Class
So ist class Person ( class Person bezeichnen) ist ein Abstrakt. Aber Wenn ICh oder Sie werden bestimmten, ist das 2 Instance von class Person. Und Constructor ist eine besondere Methode für die Instance Erstellung. Constructor wird den Wert in Field der Class für die Instance nenen
Sehen Sie Beispiel, Wie ein Instance aus ein Constructor erstellt wird
3. Die Vererbung in Java
Wir brauchen einige Class für die Darstellung des Beispiel.
- Animal: Class bezeichnet die Class Tier.
- Duck: Class bezeichnet Class Ernte, ein Tochterclass der Animal.
- Cat: Class bezeichnet die Class Katze, ein Tochterclass der Animal
- Mouse: Class bezeichnet die Class Maus, ein Tochter class der Animal.
Hier haben Wir die Class Animal, mit einen inhaltlosen Method.
Class Animal ist ein abstraktes Method und so sollen abstract gemeldet werden. Die abtrakte Class hat die Constructor aber von den können Sie keine Instance erstellen.
- public abstract String getAnimalName();
Class Animal ist ein abstraktes Method und so sollen abstract gemeldet werden. Die abtrakte Class hat die Constructor aber von den können Sie keine Instance erstellen.
- Auf der Wesen sollen Sie einen bestimmten Tier Name erstellen wenn Sie ein Tier Instance erstellen. In diesem Fall sollen Sie die Constructor von Cat, Mouse oder Duck.
Animal.java
package org.o7planning.tutorial.inheritance.animal;
// Die Klasse hat mindesten eine abstrakte Methode
// Sie muss als abstrakt erklärt werden
public abstract class Animal {
// Der Name, zum Beispiel die Katze Tom, die Maus Jerry.
private String name;
// Der default Constructor.
public Animal() {
// Die default Wert für 'name' anweisen.
this.name = this.getAnimalName();
}
public Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// Das ist eine abstrakte Methode.
// Den Name dieses Art des Tier zurückgeben
// Die konkrete Inhalte der Methode wird in der Subklasse implementiert (implemented) .
public abstract String getAnimalName();
}
Nächste sehen Sie class Cat, die Inheritance aus Animal.
Cat hat auch seine Constructor und seine Fields. In die erste Zelle von Constructor rufen Sie immer die super(...) d.h Vaterconstructor, um die Wert für die Vaterclass zu erstellen.
Wenn Sie nicht rufen, verstand Java standardmäßig super(), d.h die Standardconstructor der Vaterclass rufen
Wenn Sie nicht rufen, verstand Java standardmäßig super(), d.h die Standardconstructor der Vaterclass rufen
Cat.java
package org.o7planning.tutorial.inheritance.animal;
public class Cat extends Animal {
private int age;
private int height;
public Cat(int age, int height) {
// Die Aufruf nach dem default-Constructor der Vaterklasse (Animal).
// Der Zweck ist die Anweisung der Wert für die Felder der Vaterklasse.
super();
// Dann die Wert für seine Felder anweisen.
this.age = age;
this.height = height;
}
public Cat(String name, int age, int height) {
// Die Aufruf nach dem Constructor der Vaterklasse (Animal)
// Der Zweck ist die Anweisung der Wert für die Felder der Vaterklasse.
super(name);
// Dann die Wert für seine Felder anweisen
this.age = age;
this.height = height;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
// Die abstrakte Methode, die in der Vaterklasse erklärt wird, implementieren (implement)
@Override
public String getAnimalName() {
return "Cat";
}
}
Wenn Sie ein Instance Cat erstellen, was passiert?
Sehen Sie die Class Mouse, die Inheritance aus Animal.
Mouse.java
package org.o7planning.tutorial.inheritance.animal;
public class Mouse extends Animal {
private int weight;
// Der default Constructor.
public Mouse() {
// Gọi tới cấu tử Mouse(int)
// Call to constructor Mouse(int)
this(100);
}
// Der Constructor hat einen Parameter
public Mouse(int weight) {
// Wenn Sie eine super(..) nicht aufrufen, wird Java ein default super() aufrufen.
// super();
this.weight = weight;
}
// Der Constructor hat 2 Parameter
public Mouse(String name, int weight) {
super(name);
this.weight = weight;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
@Override
public String getAnimalName() {
return "Mouse";
}
}
InstanceofDemo.java
package org.o7planning.tutorial.inheritance.demo;
import org.o7planning.tutorial.inheritance.animal.Animal;
import org.o7planning.tutorial.inheritance.animal.Cat;
import org.o7planning.tutorial.inheritance.animal.Mouse;
public class InstanceofDemo {
public static void main(String[] args) {
// Ein Objekt Tier initializieren.
// Animal ist eine abstrakte Klasse.
// Sie können ein Objekt aus dem Constructor vom Animal nicht erstellen
Animal tom = new Cat("Tom", 3, 20);
System.out.println("name: " + tom.getName());
System.out.println("animalName: " + tom.getAnimalName());
// Den Operator 'instanceof' benutzen um zu prüfen, ob ein Objekt ein Typ oder nicht ist
boolean isMouse = tom instanceof Mouse;
System.out.println("Tom is mouse? " + isMouse);
boolean isCat = tom instanceof Cat;
System.out.println("Tom is cat? " + isCat);
boolean isAnimal = tom instanceof Animal;
System.out.println("Tom is animal? " + isAnimal);
}
}
Ergebnis von Beispiel
name: Tom
animalName: Cat
Tom is mouse? false
Tom is cat? true
Tom is animal? true
InheritMethodDemo.java
package org.o7planning.tutorial.inheritance.demo;
import org.o7planning.tutorial.inheritance.animal.Cat;
public class InheritMethodDemo {
public static void main(String[] args) {
// Ein Objekt Cat erstellen.
Cat tom = new Cat("Tom", 3, 20);
// Die Methode aufrufen, die aus der Vaterklasse (Animal) geerbt wird.
System.out.println("name: " + tom.getName());
System.out.println("animalName: " + tom.getAnimalName());
System.out.println("-----------------");
// Die Aufruf auf die Methode, die auf der Klasse Cat erklärt wird
System.out.println("Age: " + tom.getAge());
System.out.println("Height: " + tom.getHeight());
}
}
Ergebnis von Beispiel
name: Tom
animalName: Cat
-----------------
Age: 3
Height: 20
Cast in Java
CastDemo.java
package org.o7planning.tutorial.inheritance.demo;
import java.util.Random;
import org.o7planning.tutorial.inheritance.animal.Animal;
import org.o7planning.tutorial.inheritance.animal.Cat;
import org.o7planning.tutorial.inheritance.animal.Mouse;
public class CastDemo {
// Die Methode gibt random ein Tier zurückgeben.
public static Animal getRandomAnimal() {
// Die Wert random 0 oder 1 zurückgeben.
int random = new Random().nextInt(2);
Animal animal = null;
if (random == 0) {
animal = new Cat("Tom", 3, 20);
} else {
animal = new Mouse("Jerry", 5);
}
return animal;
}
public static void main(String[] args) {
Animal animal = getRandomAnimal();
if (animal instanceof Cat) {
// Cast zum Cat-Typ.
Cat cat = (Cat) animal;
// Und die Aufruf auf eine Methode der Klasse Cat.
System.out.println("Cat height: " + cat.getHeight());
} else if (animal instanceof Mouse) {
// Cast zum Mouse Typ.
Mouse mouse = (Mouse) animal;
// Und die Aufruf auf eine Methode der Klasse Mouse.
System.out.println("Mouse weight: " + mouse.getWeight());
}
}
}
4. Polymorphismus in Java
Sie haben ein AsianCat, Sie können sie ein Katze (Cat) oder ein Tier (Animal) nennen. Das ist Polymorphism
Oder ein weiteres Beispiel: In lebenslauf is es geschrieben, Sie sind Asiate, inzwischen Sie sind in der Praxis Vietnamese.
Das unten Beispiel stellt Ihnen die Verhältnis zwischen Anmeldung und Praxis dar.
Oder ein weiteres Beispiel: In lebenslauf is es geschrieben, Sie sind Asiate, inzwischen Sie sind in der Praxis Vietnamese.
Das unten Beispiel stellt Ihnen die Verhältnis zwischen Anmeldung und Praxis dar.
Class AsianCat ist ein Inheritance Class aus Cat
AsianCat.java
package org.o7planning.tutorial.inheritance.animal;
public class AsianCat extends Cat {
public AsianCat(String name, int age, int height) {
super(name, age, height);
}
// Die Methode der Vaterklasse (Cat) überschreiben (override)
@Override
public String getAnimalName() {
return "Asian Cat";
}
}
Polymorphism in Java wird in dem unten Beispiel erklärt
PolymorphismDemo.java
package org.o7planning.tutorial.polymorphism;
import org.o7planning.tutorial.inheritance.animal.AsianCat;
import org.o7planning.tutorial.inheritance.animal.Cat;
public class PolymorphismDemo {
public static void main(String[] args) {
Cat cat1 = new Cat("Tom", 3, 20);
Cat cat2 = new AsianCat("ATom", 2, 19);
System.out.println("Animal Name of cat1: " + cat1.getAnimalName());
System.out.println("Animal Name of cat2: " + cat2.getAnimalName());
}
}
Das Ergebnis von Beispiel
Animal Name of cat1: Cat
Animal Name of cat2: Asian Cat
Java Grundlagen
- Anpassen von Java-Compiler, der Ihre Annotation verarbeitet (Annotation Processing Tool)
- Java Programmierung für Team mit Eclipse und SVN
- Die Anleitung zu Java WeakReference
- Die Anleitung zu Java PhantomReference
- Komprimierung und Dekomprimierung in Java
- Konfigurieren von Eclipse zur Verwendung des JDK anstelle von JRE
- Java-Methoden String.format() und printf()
- Syntax und neue Funktionen in Java 8
- Die Anleitung zu Java Reguläre Ausdrücke
- Die Anleitung zu Java Multithreading Programming
- JDBC Driver Bibliotheken für verschiedene Arten von Datenbank in Java
- Die Anleitung zu Java JDBC
- Holen Sie sich die automatisch erhöhenden Wert der Spalte bei dem Insert eines Rekord, der JDBC benutzt
- Die Anleitung zu Java Stream
- Die Anleitung zu Java Functional Interface
- Einführung in Raspberry Pi
- Die Anleitung zu Java Predicate
- Abstrakte Klasse und Interface in Java
- Zugriffsmodifikatoren (Access modifiers) in Java
- Die Anleitung zu Java Enum
- Die Anleitung zu Java Annotation
- Vergleichen und Sortieren in Java
- Die Anleitung zu Java String, StringBuffer und StringBuilder
- Die Anleitung zu Java Exception
- Die Anleitung zu Java Generics
- Manipulieren von Dateien und Verzeichnissen in Java
- Die Anleitung zu Java BiPredicate
- Die Anleitung zu Java Consumer
- Die Anleitung zu Java BiConsumer
- Was ist erforderlich, um mit Java zu beginnen?
- Geschichte von Java und der Unterschied zwischen Oracle JDK und OpenJDK
- Installieren Sie Java unter Windows
- Installieren Sie Java unter Ubuntu
- Installieren Sie OpenJDK unter Ubuntu
- Installieren Sie Eclipse
- Installieren Sie Eclipse unter Ubuntu
- Schnelle lernen Java für Anfänger
- Geschichte von Bits und Bytes in der Informatik
- Datentypen in Java
- Bitweise Operationen
- if else Anweisung in Java
- Switch Anweisung in Java
- Schleifen in Java
- Die Anleitung zu Java Array
- JDK Javadoc im CHM-Format
- Vererbung und Polymorphismus in Java
- Die Anleitung zu Java Function
- Die Anleitung zu Java BiFunction
- Beispiel für Java Encoding und Decoding mit Apache Base64
- Die Anleitung zu Java Reflection
- Java-Remote-Methodenaufruf - Java RMI
- Die Anleitung zu Java Socket
- Welche Plattform sollten Sie wählen für Applikationen Java Desktop entwickeln?
- Die Anleitung zu Java Commons IO
- Die Anleitung zu Java Commons Email
- Die Anleitung zu Java Commons Logging
- Java System.identityHashCode, Object.hashCode und Object.equals verstehen
- Die Anleitung zu Java SoftReference
- Die Anleitung zu Java Supplier
- Java Aspect Oriented Programming mit AspectJ (AOP)
Show More
- Anleitungen Java Servlet/JSP
- Die Anleitungen Java Collections Framework
- Java API für HTML & XML
- Die Anleitungen Java IO
- Die Anleitungen Java Date Time
- Anleitungen Spring Boot
- Anleitungen Maven
- Anleitungen Gradle
- Anleitungen Java Web Services
- Anleitungen Java SWT
- Die Anleitungen JavaFX
- Die Anleitungen Oracle Java ADF
- Die Anleitungen Struts2 Framework
- Anleitungen Spring Cloud