Selepas subkelas mewarisi kelas induk, ia boleh menulis kaedah dalam subkelas dengan nama yang sama dan parameter yang sama dengan kelas induk, untuk merealisasikan kawalan kelas induk Mengatasi kaedah dengan nama dan parameter yang sama, kami memanggil proses ini menimpa (override)
2.1 Apabila kaedah daripada kelas induk tidak dapat memenuhi keperluan kanak-kanak Apabila memenuhi keperluan kelas, kaedah tersebut perlu ditulis semula dalam subkelas
2.2 Soalan dan Analisis
Sebagai contoh, terdapat kelas induk Peple, subkelas Cina, dan terdapat kata dalam kaedah kelas induk () mengeluarkan orang yang bercakap, tetapi apa yang saya mahu ialah mengeluarkan orang Cina bercakap apabila dipanggil dalam subkelas Jelas sekali memanggil kaedah itu secara langsung tidak berfungsi , jadi kaedah sebut perlu ditulis semula dalam subkelas
2.3 Contoh kod
People class
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public void say(){ System.out.println("人在说话"); } }
Chinese class
public class Chinese extends Peple{ public Chinese() { } @Override public void say() { System.out.println("中国人在说话"); } }
Test03 class
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.say(); //当进行方法重写时,调用的是子类的say()方法 } }
2.4 Contoh kod menjalankan tangkapan skrin
@Override 权限修饰符 返回值类型 方法名(形参列表){ //子类重写的方法的权限修饰符的访问权限必须大于等于父类的,但是父类不能是private //当父类的返回值类型为基本数据类型或者为void时,子类方法的返回值类型也应该为对应的基本数据类型或者void }
3.2.1 Hak akses kaedah yang ditindih oleh subkelas hendaklah lebih besar daripada atau sama dengan hak akses kaedah kelas induk
a Contoh kod
Kelas orang
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } //没有写访问权限的话,默认是default访问权限 void say(){ System.out.println("人在说话"); } }
Kelas Cina
public class Chinese extends Peple{ public Chinese(){ } //父类say方法的访问权限为default,子类say方法的访问权限为public, // 符合子类方法访问权限大于等于父类方法访问权限的要求 @Override public void say() { System.out.println("中国人在说话"); } }
Kelas Test03
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.say(); } }
b Contoh kod menjalankan tangkapan skrin
Jika jenis nilai pulangan kaedah kelas induk ialah jenis data asas, maka Jenis nilai pulangan kaedah yang ditindih oleh subkelas mestilah juga jenis data asas yang sepadan
kod Contoh
Kelas rakyat
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public double add(int a,int b){ return a+b; } }
Kelas Cina
public class Chinese extends Peple{ public Chinese(){ } @Override public double add(int a,int b) { return a+b+1; } }
Kelas Test03
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); System.out.println("求和之和再加上1的结果为: "+c.add(2, 3)); } }
b Contoh kod menjalankan tangkapan skrin
3.2.3 Apabila jenis nilai pulangan kaedah kelas induk terbatal, subkelas menimpa Jenis nilai pulangan kaedah tersebut juga terbatal
Kod sampel
Kelas orang
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public void eat(){ System.out.println("人的主食一般是熟食"); } }
Kelas Cina
public class Chinese extends Peple{ public Chinese(){ } @Override public void eat() { System.out.println("中国人的主食是大米或者小麦"); } }
Kelas Test03
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.eat(); } }
b Tangkapan skrin kod sampel berjalan
3.2.4 Apabila kaedah kelas induk diubah suai secara statik, subkelas tidak boleh mengatasi kaedah
a Kod contoh ralat
Kelas orang
public class Peple { private String name; private String sex; private int age; private int weight; public Peple() { } public Peple(String name, String sex, int age, int weight) { this.name = name; this.sex = sex; this.age = age; this.weight=weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public static void eat(){ System.out.println("人的主食一般是熟食"); } }
Kelas Cina
public class Chinese extends Peple{ public Chinese(){ } @Override public void eat() { System.out.println("中国人的主食是大米或者小麦"); } }
Kelas Test03
public class Test03 { public static void main(String[] args) { Chinese c=new Chinese(); c.eat(); } }
b Contoh kod menjalankan tangkapan skrin
idea semasa menyusun Mesej ralat yang diberikan
Mesej ralat yang diberikan selepas operasi paksa
3.3.1 Kaedah salin
Langkah-langkah
1 . Mula-mula salin terus (Ctrl+C) kelas induk yang perlu ditindih oleh subkelas Kaedah itu
2 Tampal (Ctrl+V) ke dalam subkelas
3 dalam subkelas untuk memudahkan merealisasikan keperluan yang kelas induk tidak dapat mencapai
operasi Paparan Tangkapan skrin
3.3. 2 Kaedah gesaan pengkompil
Langkah
1 Pertama Dalam isi subkelas, tulis simbol @ Bahasa Inggeris
2 Pilih Ganti/laksanakan kaedah dalam gesaan...
3. Klik dua kali dan pilihan kaedah ganti akan muncul tetingkap timbul
4 >5. Selepas mengklik butang ok, kaedah mengatasi kaedah yang anda pilih akan dihasilkan dalam subkelas
6 Alih keluar baris pertama yang dijana secara automatik dalam kaedah penulisan semula yang dijana, dan kemudian tulis pernyataan yang sesuai dalam badan kaedah mengikut keperluan
Tangkapan skrin operasi
3.3 .3 Kaedah kekunci pintasan
Langkah
1 Gerakkan tetikus ke kekunci Tulis kedudukan di mana kaedah harus dijana
2. Tekan kekunci Alt dan Sisipkan kekunci pada papan kekunci pada masa yang sama,
3 Dalam kotak pop timbul, pilih Override Methods
4. Selepas mengklik dua kali, antara muka akan muncul. pilih kaedah yang perlu ditindih oleh subkelas
5 Selepas mengklik butang OK, kaedah penggantian yang diperlukan akan dihasilkan
6 Alih keluar kaedah mengatasi Baris pertama dijana secara automatik badan kaedah, dan kemudian tulis pernyataan yang sesuai
Tangkapan skrin operasi menunjukkan
Atas ialah kandungan terperinci Cara Menguasai Penggantian Kaedah dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!