Abstrakte Klasse und Interface in Java
1. Die Vorstellung
In dieser Unterlagen gebe ich die Hinweise über Interface und Abstract Class. Gleichzeigt analysiere ich die Gleichheit und Unterschied von ihnen
2. Die Abstrakte Klasse (Abstract class)
Abstract class, Sehen Sie ein Beispiel über derselbe class
// Das ist eine abstrakte Klasse .
// Es muss zwanghaft als abstract verzollen
// denn sie hat eine abstrakte Methode
public abstract class ClassA {
// Das ist eine abstrakte Methode. Sie hat keinen Körper
// Access modifier dieser Methode ist public.
public abstract void doSomething();
// Access modifier dieser Methode ist protected.
protected abstract String doNothing();
// Die Methode erklärt access modifier nicht.
// Ihre Access modifier ist Default.
abstract void todo() ;
}
// Das ist eine abstrakte Klasse. Sie wird abstract verzollt
// obwohl sie keine abstrakte Methode hat
public abstract class ClassB {
}
Die Eigenschaften von Abstrakt Class sind:
- Es wird abstract.gemeldet
- Es wird 0, 1 oder viele abstrakt method darin gemeldet.
- es kann nicht ein Instance aus abstrakt class zu erstellen sein
3. Das Beispiel mit der abstrakten Klasse
Sehen Sie Beispiel
AbstractJob.java
package org.o7planning.tutorial.abs;
// Eine abstrakte Klasse (eine Arbeit simulieren)
// Sie verzollt 2 abstrakte Methode.
public abstract class AbstractJob {
public AbstractJob() {
}
// Das ist eine abstrakte Methode.
// Diese Methode gibt den Name der Arbeit zurück.
public abstract String getJobName();
// Das ist eine abstrakte Methode
public abstract void doJob();
}
JavaCoding.java
package org.o7planning.tutorial.abs;
// Diese Klasse führt die abstrakten Methode der Vaterklasse durch.
public class JavaCoding extends AbstractJob {
public JavaCoding() {
}
// Die abstrakte Methode, die bei der Vaterklasse erklärt werden, durchführen
@Override
public void doJob() {
System.out.println("Coding Java...");
}
// Die Durchführung der abstrakten Methode, die bei der Vaterklasse erklärt werden.
// Die Methode hat den Körper (body).
// Und den Name der Arbeit zurückgeben
@Override
public String getJobName() {
return "Coding Java";
}
}
ManualJob.java
package org.o7planning.tutorial.abs;
// ManualJob - eine Arbeit bezeichnen
// Die Vaterklasse (AbstractJob) hat 2 abstrakte Methode.
// Diese Klasse implementiert eine abstrakte Methode der Vaterklasse
// Deshalb muss sie als abstract verzollen
public abstract class ManualJob extends AbstractJob {
public ManualJob() {
}
// Die Durchführung der abstrakten Methode der Vaterklasse
@Override
public String getJobName() {
return "Manual Job";
}
}
BuildHouse.java
package org.o7planning.tutorial.abs;
// Diese Klasse erbt aus der abstrakten Klasse ManualJob
// BuildHouse wird als abstrakt nicht verzollt.
// Deshalb braucht sie alle restlichen abstrakten Methoden.
public class BuildHouse extends ManualJob {
public BuildHouse() {
}
// Die Durchführung der abstrakten Vaterklasse
@Override
public void doJob() {
System.out.println("Build a House");
}
}
Demo Beispiel
JobDemo.java
package org.o7planning.tutorial.abs;
public class JobDemo {
public static void main(String[] args) {
// Ein Objekt AbstractJob aus dem Constructor der Klasse JavaCoding erstellen.
AbstractJob job1 = new JavaCoding();
// Die Aufruf nach der Methode doJob()
job1.doJob();
// Die Methode getJobName ist abstrakt in der Klasse AbstractJob.
// Aber sie wird in einer Subklasse implementiert.
// So können Sie sie aufrufen
String jobName = job1.getJobName();
System.out.println("Job Name 1= " + jobName);
// Ein Objekt AbstractJob aus dem Constructor der Klasse BuildHouse erstellen
AbstractJob job2 = new BuildHouse();
job2.doJob();
String jobName2 = job2.getJobName();
System.out.println("Job Name 2= " + jobName2);
}
}
Ergebnis von Beispiel
Coding Java...
Job Name 1= Coding Java
Build a House
Job Name 2= Manual Job
4. Tổng quan về Interface
Wir wissen, dass ein Class nur aus ein VaterClass ausgeweitert werden kann
// Die Klasse B ist die Subklasse der Klasse A oder mit anderen Worten ist B aus A verlängert
// Java erlaubt, dass eine Klasse nur aus einer einzigen Klasse verlängen.
public class B extends A {
// ....
}
// Falls nicht bestimmen, von welcher bestimmten Klasse die Klasse B verlängert wird,
// nach dem Default verstanden, dass B aus der Klasse Objekt verlängert wird.
public class B {
}
// Diese Erklärung und die obengemeinte Maßnahme sind gleich
public class B extends Object {
}
Aber ein Class kann aus viele Interface ausgeweitert werden
// Eine Klasse kann aus einer Vaterklasse nur velängert werden,
// aber aus mehren Interface verlängert
public class Cat extends Animal implements CanEat, CanDrink {
// ....
}
Các đặc điểm của interface
- Interface hat immer modifier : public interface, falls Sie melden oder nicht.
- Wenn Die Field sich befindet, sind sie public static final, falls Sie melden oder nicht.
- Ihre Methode sind abtrakt methode, d.h haben die modifier public abstract, falls Sie melden oder nicht.
- Interface hat keine Constructor.
5. Die Struktur von Interface
NoAccessModifierInterface.java
package org.o7planning.tutorial.itf;
// Das ist eine Interface, die 'access modifier' nicht festlegt.
// Ihre Access modifier ist Default.
// Nur die Klasse in der gleichen Package können die Interface implementieren.
interface NoAccessModifierInterface {
}
CanMove.java
package org.o7planning.tutorial.itf;
// Diese Interface definiert ein Standard über die beweglichen Dinge
public interface CanMove {
// Die Methode in der Interface sind abstrakt und public.
public abstract void run();
// Obwohl Sie 'public abstract' nicht schreiben, versteht Java das immer.
void back();
// Die Geschwindigkeit
public int getVelocity();
}
CanDrink.java
package org.o7planning.tutorial.itf;
// Die Interface definiert ein Standard über die trinkbaren Dinge.
public interface CanDrink {
// Die Felder (field) in der Interface sind 'public static final'.
// Obwohl Sie klar oder nicht verzollen, versteht Java das immer
public static final String PEPSI = "PEPSI";
final String NUMBER_ONE = "NUMBER ONE";
String SEVENUP = "SEVEN UP";
public void drink();
}
CanEat.java
package org.o7planning.tutorial.itf;
// Die Interface definiert ein Standard über die essbaren Dinge
public interface CanEat {
public void eat();
}
6. Die Klasse der Implementation der Interface
Animal.java
package org.o7planning.tutorial.cls;
import org.o7planning.tutorial.itf.CanMove;
// Animal (das Tier).
// Diese Klasse verlängert aus der Klasse Object .
// und implementiert die Interface CanMove.
// Interface CanMove hat 3 abstrakte Methode.
// Diese Klasse implementiert nur eine Methode.
// So muss es als abstrakt verzollen.
// Die restlichen abstrakten Methode werden durch die SubKlasse durchgrführt.
public abstract class Animal implements CanMove {
// Die Durchführung der Methode run() der Interface CanMove.
@Override
public void run() {
System.out.println("Animal run...");
}
}
Cat.java
package org.o7planning.tutorial.cls;
import org.o7planning.tutorial.itf.CanDrink;
import org.o7planning.tutorial.itf.CanEat;
// Die Klasse Cat verlängert aus der Klasse Animal
// und implementiert 2 Interface CanEat, CanDrink.
// Cat ist eine normale Klasse ( sie wird als abstrakt nicht erklärt).
// So muss sie alle abstrakten Methode der Interface durchführen.
public class Cat extends Animal implements CanEat, CanDrink {
private String name;
public Cat(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
// Die Methode der Interface CanMove implementieren
@Override
public void back() {
System.out.println(name + " cat back ...");
}
// Die Methode der Interface CanMove implementieren
@Override
public int getVelocity() {
return 110;
}
// Die Methode der Interface CanEat implementieren.
@Override
public void eat() {
System.out.println(name + " cat eat ...");
}
// Die Methode der Interface CanDrink implementieren.
@Override
public void drink() {
System.out.println(name + " cat drink ...");
}
}
Mouse.java
package org.o7planning.tutorial.cls;
import org.o7planning.tutorial.itf.CanDrink;
import org.o7planning.tutorial.itf.CanEat;
public class Mouse extends Animal implements CanEat, CanDrink {
@Override
public void back() {
System.out.println("Mouse back ...");
}
@Override
public int getVelocity() {
return 85;
}
@Override
public void drink() {
System.out.println("Mouse drink ...");
}
@Override
public void eat() {
System.out.println("Mouse eat ...");
}
}
AnimalDemo.java
package org.o7planning.tutorial.cls;
import org.o7planning.tutorial.itf.CanEat;
public class AnimalDemo {
public static void main(String[] args) {
// Den static Felder aus Interface CanDrink erben.
System.out.println("Drink " + Cat.SEVENUP);
// Ein Objekt CanEat initializieren.
// Ein Objekt, das als CanEat erklärt wird.
// Aber es ist eigentlich Cat.
CanEat canEat1 = new Cat("Tom");
// Ein Objekt, das als CanEat erklärt wird.
// Aber es ist eigentlich Mouse.
CanEat canEat2 = new Mouse();
// Das Polymorphism wird klar hier gezeigt .
// Java kennt immer, zu welchem Typ ein Objekt gehört
// ==> Tom cat eat ...
canEat1.eat();
// ==> Mouse eat ...
canEat2.eat();
boolean isCat = canEat1 instanceof Cat;
System.out.println("catEat1 is Cat? " + isCat);
// Cast.
if (canEat2 instanceof Mouse) {
Mouse mouse = (Mouse) canEat2;
// Die Aufruf auf die Methode drink (aus CanDrink erben).
mouse.drink();
}
}
}
Beispiel bezeichnet das Ergebnis
Drink SEVEN UP
Tom cat eat ...
Mouse eat ...
catEat1 is Cat? true
Mouse drink ...
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