Latest web development tutorials

rewrite Java (Override) dan overloading (Overload)

Rewrite (Override)

Menulis ulang adalah subclass dari proses implementasi untuk memungkinkan akses ke metode kelas induk untuk menulis ulang! kembali nilai-nilai dan parameter yang tidak berubah. Itu adalah kasus yang sama, inti menulis ulang!

Menulis ulang keuntungan dari subclass yang diperlukan, menentukan spesifik dalam tindakan mereka.

Itu adalah subclass dari metode kelas induk dapat direalisasikan sesuai kebutuhan.

Dalam prinsip berorientasi objek, menulis ulang berarti bahwa Anda dapat menimpa metode yang ada. Contohnya adalah sebagai berikut:

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 类的方法
   }
}

Contoh di atas hasil disusun adalah sebagai berikut:

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

Dalam contoh di atas dapat dilihat, meskipun b milik jenis hewan, tetapi itu adalah langkah operasi kelas metode Dog.

Hal ini karena pada waktu kompilasi, tetapi memeriksa parameter tipe referensi.

Namun, pada waktu berjalan, jenis Java Virtual Machine (JVM) dari objek tertentu dan metode operasi objek.

Jadi dalam contoh di atas, compiler telah mampu berhasil karena metode bergerak ada kelas Hewan, tapi berjalan, berjalan adalah metode untuk objek tertentu.

Perhatikan contoh berikut:

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();
   }
}

Contoh di atas hasil disusun adalah sebagai berikut:

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

Program ini akan melemparkan kesalahan kompilasi karena tidak ada referensi b metode kulit Jenis Hewan.


Metode menulis ulang aturan

  • daftar parameter harus persis sama dengan metode yang akan ditulis ulang;
  • Jenis kembali harus benar-benar ditulis ulang dengan jenis kembali metode yang sama;
  • Akses tidak lebih rendah dari metode akses kelas induk diganti. Sebagai contoh: Jika kelas induk dinyatakan publik, kemudian menimpa metode ini dalam subclass tidak dapat dinyatakan sebagai dilindungi.
  • Anggota kelas induk hanya dapat diganti subclass.
  • Dinyatakan sebagai metode akhir tidak dapat diganti.
  • Dinyatakan sebagai metode statis tidak dapat ditulis ulang, tetapi dapat dinyatakan lagi.
  • Kelas induk dan subclass dalam paket yang sama, subclass dapat menimpa kelas induk dari semua metode, selain pernyataan pendekatan pribadi dan akhir.
  • Subclass dan superclass tidak paket yang sama, sehingga hanya subclass dapat menimpa deklarasi metode non-final kelas induk publik dan dilindungi untuk.
  • metode ditimpa dapat membuang pengecualian apapun non-wajib, terlepas dari apakah metode ini telah ditulis ulang melempar pengecualian. Namun, metode tidak bisa menimpa pengecualian wajib membuang baru atau lebih luas daripada deklarasi wajib adalah metode ditimpa pengecualian, jika Anda bisa.
  • Konstruktor tidak dapat ditulis ulang.
  • Jika metode tidak dapat diwariskan, tidak dapat mengganti metode ini.

Menggunakan Super kata kunci

Ketika Anda perlu ditulis ulang untuk memanggil metode kelas induk di subclass, untuk menggunakan kata kunci super.

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类的方法

   }
}

Contoh di atas hasil disusun adalah sebagai berikut:

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

Overload (Overload)

Overload (overloading) berada dalam kelas dalam metode dengan nama yang sama, tetapi dengan parameter yang berbeda. Jenis kembali mungkin sama atau berbeda.

Setiap metode kelebihan beban (atau konstruktor) harus memiliki daftar yang unik dari jenis argumen.

konstruktor hanya kelebihan beban

overloading aturan

  • Metode kelebihan beban harus mengubah daftar parameter;
  • metode kelebihan beban dapat mengubah kembali jenis;
  • metode kelebihan beban dapat mengubah pengubah akses;
  • metode kelebihan beban dapat mendeklarasikan pengecualian baru atau lebih luas diperiksa;
  • Metode ini dapat di kelas yang sama atau kelebihan beban di subclass.

contoh

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));
	}
}

Menulis ulang perbedaan antara overloading

Titik perbedaan metode kelebihan beban metode utama
Daftar parameter Anda harus dimodifikasi Tidak boleh dimodifikasi
Kembali Jenis Anda dapat memodifikasi Tidak boleh dimodifikasi
abnormal Anda dapat memodifikasi Dapat dikurangi atau dihapus, Anda tidak harus membuang pengecualian baru atau lebih luas
akses Anda dapat memodifikasi tidak boleh pembatasan lebih ketat (batas dapat dikurangi)