Rumah > Java > javaTutorial > Bilakah Kaedah Overriding di Java Mempunyai Jenis Pulangan Berbeza?

Bilakah Kaedah Overriding di Java Mempunyai Jenis Pulangan Berbeza?

Barbara Streisand
Lepaskan: 2024-12-02 19:03:14
asal
271 orang telah melayarinya

When Can Overriding Methods in Java Have Different Return Types?

Jenis Pulangan Kovarian dalam Kaedah Overriding

Kaedah overriding dalam Java boleh berbeza dalam jenis pulangannya, dengan syarat syarat tertentu dipenuhi. Khususnya, Java menyokong jenis pulangan kovarian, membenarkan kaedah mengatasi mempunyai jenis pulangan yang lebih spesifik daripada kaedah yang ditindihnya.

Menurut bahagian Spesifikasi Bahasa Java (JLS) 8.4.5, ini dibenarkan selagi kerana peraturan berikut dipatuhi:

  • Jika kaedah asal mengembalikan batal, kaedah mengatasi mesti juga kembali batal.
  • Jika kaedah asal mengembalikan jenis primitif, kaedah mengatasi mesti mengembalikan jenis primitif yang sama.
  • Jika kaedah asal mengembalikan jenis rujukan:

    • Jenis pemulangan kaedah mengatasi mestilah subjenis pemulangan kaedah asal taip.
    • Sebagai alternatif, jenis pemulangan kaedah mengatasi boleh terhasil daripada penukaran yang tidak ditandai bagi jenis pemulangan kaedah asal, atau
    • Jenis pemulangan kaedah mengatasi boleh menjadi pemadaman jenis pemulangan kaedah asal ( selepas parameter jenis generik dialih keluar).

Sebagai contoh, pertimbangkan kod berikut:

class ShapeBuilder {
    ...
    public Shape build() {
        ....
    }
}

class CircleBuilder extends ShapeBuilder{
    ...
    @Override
    public Circle build() {
        ....
    }
}
Salin selepas log masuk

Dalam contoh ini, kaedah bina() dalam CircleBuilder mengatasi kaedah bina() dalam ShapeBuilder. Jenis pengembalian kaedah yang ditindih ialah Bentuk, manakala jenis pengembalian kaedah yang ditindih ialah Bulatan, yang merupakan subjenis Bentuk. Ini dibenarkan oleh peraturan jenis pulangan kovarian Java.

Atas ialah kandungan terperinci Bilakah Kaedah Overriding di Java Mempunyai Jenis Pulangan Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan