Rumah  >  Artikel  >  Java  >  Cara Menguasai Penggantian Kaedah dalam Java

Cara Menguasai Penggantian Kaedah dalam Java

PHPz
PHPzke hadapan
2023-05-25 13:07:16955semak imbas

Cara Menguasai Penggantian Kaedah dalam Java

1 Maksud

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. Mengapa menggunakan kaedah mengatasi

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

Cara Menguasai Penggantian Kaedah dalam Java

3. Cara menggunakan kaedah penulisan semula

3.1 Sintaks asas

@Override
权限修饰符 返回值类型 方法名(形参列表){
    //子类重写的方法的权限修饰符的访问权限必须大于等于父类的,但是父类不能是private
    //当父类的返回值类型为基本数据类型或者为void时,子类方法的返回值类型也应该为对应的基本数据类型或者void
  
}

3.2 Analisis terperinci

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

Cara Menguasai Penggantian Kaedah dalam Java

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

Cara Menguasai Penggantian Kaedah dalam Java

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

Cara Menguasai Penggantian Kaedah dalam Java

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

Cara Menguasai Penggantian Kaedah dalam Java

Mesej ralat yang diberikan selepas operasi paksa

Cara Menguasai Penggantian Kaedah dalam Java

3.3 Kaedah menulis semula Beberapa petua

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

Cara Menguasai Penggantian Kaedah dalam Java

Cara Menguasai Penggantian Kaedah dalam Java

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

Cara Menguasai Penggantian Kaedah dalam Java

Cara Menguasai Penggantian Kaedah dalam Java

Cara Menguasai Penggantian Kaedah dalam Java3.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

Cara Menguasai Penggantian Kaedah dalam Java

Cara Menguasai Penggantian Kaedah dalam Java

Cara Menguasai Penggantian Kaedah dalam Java

Atas ialah kandungan terperinci Cara Menguasai Penggantian Kaedah dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam