Latest web development tutorials

Java-Rewrite (außer Kraft setzen) und Überlastung (Überlastung)

Rewrite (außer Kraft setzen)

Rewriting ist eine Unterklasse des Umsetzungsprozesses Zugriff auf die Methoden der Elternklasse zu ermöglichen neu zu schreiben! Rückgabewerte und Parameter werden nicht geändert. Das ist der gleiche Fall, umschreiben die Kern!

Umschreiben von Vorteil Subklassen wie nötig, spezielle in ihren Handlungen.

Das ist eine Subklasse eines Verfahrens Elternklasse können nach Bedarf realisiert werden.

In der objektorientierten Prinzipien, bedeutet das Umschreiben, dass Sie alle vorhandenen Methoden außer Kraft setzen können. Beispiele sind wie folgt:

class Animal{

   public void move(){
      System.out.println("动物可以移动");
   }
}

class Dog extends Animal{

   public void move(){
      System.out.println("狗可以跑和走");
   }
}

public class TestDog{

   public static void main(String args[]){
      Animal a = new Animal(); // Animal 对象
      Animal b = new Dog(); // Dog 对象

      a.move();// 执行 Animal 类的方法

      b.move();//执行 Dog 类的方法
   }
}

Die obigen Beispiele kompilierten Ergebnisse sind wie folgt:

动物可以移动
狗可以跑和走

Im obigen Beispiel kann man sehen, auch wenn b zu Tierarten gehört, aber es ist eine Methode, Klasse Hund Bewegungsoperation.

Dies liegt daran, zum Zeitpunkt kompilieren, aber Referenz-Typ-Parameter zu überprüfen.

Aber während der Laufzeit, die Art der Java Virtual Machine (JVM) des angegebenen Objekts und Funktionsweise des Objekts.

So in dem obigen Beispiel hat der Compiler in der Lage gewesen, um erfolgreich zu sein, weil die Bewegung Methode Animal-Klasse existiert, aber ausgeführt wird, ausgeführt wird, ein Verfahren für ein bestimmtes Objekt.

Betrachten Sie die folgenden Beispiele:

class Animal{

   public void move(){
      System.out.println("动物可以移动");
   }
}

class Dog extends Animal{

   public void move(){
      System.out.println("狗可以跑和走");
   }
   public void bark(){
      System.out.println("狗可以吠叫");
   }
}

public class TestDog{

   public static void main(String args[]){
      Animal a = new Animal(); // Animal 对象
      Animal b = new Dog(); // Dog 对象

      a.move();// 执行 Animal 类的方法
      b.move();//执行 Dog 类的方法
      b.bark();
   }
}

Die obigen Beispiele kompilierten Ergebnisse sind wie folgt:

TestDog.java:30: cannot find symbol
symbol  : method bark()
location: class Animal
                b.bark();
                 ^

Das Programm wird eine Kompilierung-Fehler werfen, weil es keine b Referenztyp Tier Rinde Methode.


Das Verfahren von Regeln neu zu schreiben

  • Parameterliste muss genau das gleiche wie das Verfahren neu geschrieben werden;
  • Der Rückgabetyp vollständig mit dem Rückgabetyp der Methode neu geschrieben werden muss, ist die gleiche;
  • Der Zugang ist nicht niedriger als die übergeordnete Klasse Zugriff überschrieben Methoden. Zum Beispiel: Wenn ein Elternteil Klasse public deklariert, dann überschreiben diese Methode in einer Unterklasse nicht deklariert als geschützt werden kann.
  • Die Mitglieder der Elternklasse kann nur ihre Unterklassen außer Kraft gesetzt werden.
  • Erklärt als endgültige Methoden können nicht überschrieben werden.
  • Erklärt als statische Methoden können nicht neu geschrieben werden, kann aber wieder deklariert werden.
  • Die Elternklasse und Unterklasse im gleichen Paket kann die Unterklasse die übergeordnete Klasse aller Methoden außer Kraft setzen, mit Ausnahme der Aussagen von privaten und Endanflug.
  • Subklasse und Super ist nicht das gleiche Paket, so dass nur Subklassen Erklärung nicht endgültige Methoden der Elternklasse öffentlichen und geschützten für außer Kraft setzen können.
  • Überschrieben Verfahren kann jede nicht obligatorische Ausnahme auslösen, unabhängig davon, ob das Verfahren neu geschrieben wurde eine Ausnahme werfen. Jedoch kann das Verfahren nicht die zwingende Ausnahme werfen neue oder breiter als die obligatorische Deklaration außer Kraft gesetzt ist überschriebene Methode Ausnahme, sonst können Sie.
  • Constructor kann nicht neu geschrieben werden.
  • Wenn eine Methode nicht vererbt werden kann, kann es diese Methode nicht außer Kraft setzen.

Mit dem Super-Schlüsselwort

Wenn Sie müssen neu geschrieben werden, um die Eltern-Klasse-Methode in einer Unterklasse zu nennen, die Super-Schlüsselwort verwenden.

class Animal{

   public void move(){
      System.out.println("动物可以移动");
   }
}

class Dog extends Animal{

   public void move(){
      super.move(); // 应用super类的方法
      System.out.println("狗可以跑和走");
   }
}

public class TestDog{

   public static void main(String args[]){

      Animal b = new Dog(); // Dog 对象
      b.move(); //执行 Dog类的方法

   }
}

Die obigen Beispiele kompilierten Ergebnisse sind wie folgt:

动物可以移动
狗可以跑和走

Überlastung (Überlastung)

Überlastung (Überlastung) ist eine Klasse innerhalb der Methode mit dem gleichen Namen, aber mit unterschiedlichen Parametern. Der Rückgabetyp kann gleich oder verschieden sein.

Jede überladene Methode (oder Konstruktor) muss eine eindeutige Liste von Argumenttypen haben.

Nur ladenen Konstruktoren

Eine Überlastung Regeln

  • Überladene Methode muss die Parameterliste ändern;
  • Überladene Methoden können die Rückgabetyp ändern;
  • Überladene Methoden können Zugriffsmodifikatoren ändern;
  • Überladene Methoden können eine neue oder breitere geprüfte Ausnahmen zu erklären;
  • Das Verfahren kann in der gleichen Klasse oder in einer Unterklasse überlastet werden.

Beispiele

public class Overloading {
 
	public int test(){
		System.out.println("test1");
		return 1;
	}
 
	public void test(int a){
		System.out.println("test2");
	}	
 
	//以下两个参数类型顺序不同
	public String test(int a,String s){
		System.out.println("test3");
		return "returntest3";
	}	
 
	public String test(String s,int a){
		System.out.println("test4");
		return "returntest4";
	}	
 
	public static void main(String[] args){
		Overloading o = new Overloading();
		System.out.println(o.test());
		o.test(1);
		System.out.println(o.test(1,"test3"));
		System.out.println(o.test("test4",1));
	}
}

Umschreiben der Unterschied zwischen Überlastung

Point-of-Differenz Überladene Methoden Überschreiben von Methoden
Parameterliste Sie müssen modifiziert werden, Darf nicht verändert werden
Rückgabetyp Sie können ändern Darf nicht verändert werden
abnormal Sie können ändern Kann reduziert oder entfernt werden, müssen Sie nicht neu oder breitere Ausnahme werfen
Zugang Sie können ändern Darf nicht strengere Beschränkungen sein (Grenzwert reduziert werden kann)