codestory

Vererbung und Polymorphismus in Java

  1.  die Vorstellung
  2. Class, Constructor, instance
  3. Die Vererbung in Java
  4. 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 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.
  • public abstract String getAnimalName();
Das Method ist ein abstraktes Method (abstract), bei der Tochterclass sollen Sie seine Inhalt melden und entwickeln. Die Wert der Method ist der Name von Tier zu bezeichnen. .
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
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.
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

Show More