2017-03-25 3 views
0

Warum wird der folgende Code kompiliert Fehler?geschützter Zugriff Java-Problem

public class A 
{  
    protected int _i; 
    public A(int i) 
    { 
     _i=i; 
    } 
    public boolean equals(Object other) 
    { 
     System.out.print("A "); 
     return ((other!=null) && (_i==other._i)); 
    } 
} 

Die Object Klasse gilt als Elternteil A, das heißt, übergeordnete Klasse und Unterklasse. Wie kommt es, dass die Klasse Object keinen Zugriff auf geschützte Variablen hat?

+1

Patente erben nicht von ihren Kindern, es funktioniert andersherum – MadProgrammer

+0

Objekt ist eine Superklasse in Java, in Ihrem Fall kann Superklassenobjekt Klasse A geschützte Datenelemente nicht verwenden. – Omore

+0

@Art - Alle Antworten, die Sie erhalten haben, sagen dasselbe: Die Eltern-Kind-Sichtbarkeit geht in eine Richtung. Dieser [link] (http://stackoverflow.com/questions/899414/in-java-why-super-class-method-cant-access-protected-or-private-methods-variab) erklärt warum. F: Sinn machen? – paulsm4

Antwort

1

Es ist kein Problem, über Zugriffsmodifikatoren überhaupt Sie werden die gleichen Fehler auch nacherklärenals public.

Das Problem ist Kind Klasse ist in der Lage, alle Mitglieder des Elternteils zu sehen, aber Eltern werden nicht in der Lage, jedes Mitglied des Kindes zu sehen. Deshalb ist other._i ungültig.

Verwandte Themen