Jadual Kandungan
回复内容:
Rumah pembangunan bahagian belakang tutorial php 子类为什么可以访问父类的私有方法

子类为什么可以访问父类的私有方法

Aug 20, 2016 am 09:03 AM
java php

<code>class PrivateOverride {

    private void f() {
        System.out.println("private f()");
    }
    public void hello(){
        this.f();
        this.bar();
    }

    protected void bar(){
        System.out.print("pri bar");
    }
}

class Derived extends PrivateOverride {

    public void f() {
        System.out.println("public f()");
    }

    public void bar(){
        System.out.print("deri bar");
    }
}
class Test4{
    public static void main(String[] args) {


        Derived po = new Derived();


        po.hello();
    }
}</code>
Salin selepas log masuk
Salin selepas log masuk

输出:
private f()
deri bar

为什么呢

回复内容:

<code>class PrivateOverride {

    private void f() {
        System.out.println("private f()");
    }
    public void hello(){
        this.f();
        this.bar();
    }

    protected void bar(){
        System.out.print("pri bar");
    }
}

class Derived extends PrivateOverride {

    public void f() {
        System.out.println("public f()");
    }

    public void bar(){
        System.out.print("deri bar");
    }
}
class Test4{
    public static void main(String[] args) {


        Derived po = new Derived();


        po.hello();
    }
}</code>
Salin selepas log masuk
Salin selepas log masuk

输出:
private f()
deri bar

为什么呢

  1. 首先这里并非直接调用privatef()方法,就像getter方法能拿到private实例变量一样,这个无需解释。

  2. 这里有个继承的问题: Derived类里的f方法并非是其父类PrivateOverride f方法的重写, 因为重写方法要求重写后方法的访问权限修饰符不能比父类更严格,在hello方法里执行this.f(),编译器优先找最近的f(即父类的f),所以打出了private f()
    当然,在实际开发中,要尽量避免这种混淆,做做基础面试题还可以。

你是通过公有的方法去访问私有的方法,这是可以的

public void hello() 是公有方法
它是允许调用本类的私有方法

依照你上述的例子并不能说子类能访问父类的私有方法。因为hello本身就是父类的方法。
如果子类是这样:

<code>class Derived extends PrivateOverride {

    public void hello() {
        System.out.println("public f()");
    }

    public void bar(){
        this.f();
        //...
    }
}</code>
Salin selepas log masuk

如果能正常运行才能说明子类能够访问父类的私有方法。

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP?

Cuti atau kembali dari Java 8 Stream Foreach? Cuti atau kembali dari Java 8 Stream Foreach? Feb 07, 2025 pm 12:09 PM

Cuti atau kembali dari Java 8 Stream Foreach?

Program PHP untuk mengira vokal dalam rentetan Program PHP untuk mengira vokal dalam rentetan Feb 07, 2025 pm 12:12 PM

Program PHP untuk mengira vokal dalam rentetan

Java Made Simple: Panduan Pemula untuk Kuasa Pengaturcaraan Java Made Simple: Panduan Pemula untuk Kuasa Pengaturcaraan Oct 11, 2024 pm 06:30 PM

Java Made Simple: Panduan Pemula untuk Kuasa Pengaturcaraan

Cipta Masa Depan: Pengaturcaraan Java untuk Pemula Mutlak Cipta Masa Depan: Pengaturcaraan Java untuk Pemula Mutlak Oct 13, 2024 pm 01:32 PM

Cipta Masa Depan: Pengaturcaraan Java untuk Pemula Mutlak

Program Java untuk mencari kelantangan kapsul Program Java untuk mencari kelantangan kapsul Feb 07, 2025 am 11:37 AM

Program Java untuk mencari kelantangan kapsul

See all articles