2016-06-20 8 views
-1

In diesem CodeWie ein abgeleitetes Klassenobjekt in Java instanziiert wird?

class Foo { 

    public int a = 3; 
} 

class Bar extends Foo { 

    public int a = 8; 
} 

public class HelloWorld { 

    public static void main(String[] args) { 
     Foo f = new Bar(); 
     Bar f = new Bar(); 
    } 
} 

Was ist der Unterschied zwischen

ist
Foo f = new Bar(); 

und

Bar f = new Bar(); 

Danke

+0

Die erste Instantiierung ist breiter als die zweite. Eine 'Bar' ist eine' Foo', aber eine 'Foo' darf keine' Bar' sein. –

+1

Hinweis: Das ist sehr einfach. Bitte informieren Sie sich vorab im Voraus über solche Themen **. Stackoverflow ist keine Programmierschule, an die Sie sich wenden, um ** Dinge zu lernen, die überall dokumentiert sind. – GhostCat

+0

Entschuldigung, ich bin ein Anfänger. Bitte geben Sie mir den Link zum Lesematerial zu diesem Thema. Danke. @ Jägermeister – user230994

Antwort

0

Diese Beziehung die ist-ein-Beziehung bezeichnet wird. Jedes Bar Objekt ist ein Foo Objekt. Ein Objekt Foo kann jedoch kein Objekt Bar sein. Wenn Sie Foo f = new Bar() aufrufen, erstellen Sie ein Objekt Foo, was bedeutet, dass nur die Felder von Foo in f zugänglich sind. Das heißt, f.a in diesem Fall ist 3.

Auf der anderen Seite, Bar f = new Bar() ein Bar Objekt erstellt, was bedeutet, dass f.a Sie 8 in diesem Fall geben.

+0

Hinweis: Lookup-Konzept der Substituierbarkeit online –

Verwandte Themen