2011-01-05 12 views
2

Ich studiere Java-Sprache für SCJP-Test.Was ist eine polymorphe Methode in Java?

Es ist ein bisschen schwer zu verstehen "polymorphe Methode".

Können Sie es mir erklären? oder gib mir ein paar Links?

+0

Haben Sie Probleme mit dem Begriff (d. H. Paraphrasierungshilfe)? Oder haben Sie Probleme mit dem Konzept des Polymorphismus? – delnan

+0

Zuerst verstehen Sie Polymorphismus? – jzd

+0

[Sunoracle Tutorial über Polymorphismus in Java] (http://download.oracle.com/javase/tutorial/java/IandI/polymorphism.html) – birryree

Antwort

16

"Polymorph" bedeutet "viele Formen." In Java können Sie eine Oberklasse mit Unterklassen haben, die verschiedene Dinge tun und denselben Namen verwenden. Das traditionelle Beispiel ist die Superklasse Shape mit den Unterklassen Circle, Square und Rectangle und das Verfahren area().

So zum Beispiel

// note code is abbreviated, this is just for explanation 
class Shape { 
    public int area(); // no implementation, this is abstract 
} 

class Circle { 
    private int radius; 
    public Circle(int r){ radius = r ; } 
    public int area(){ return Math.PI*radius*radius ; } 
} 

class Square { 
    private int wid; 
    Public Square(int w){ wid=w; } 
    public int area() { return wid*wid; } 
} 

nun ein Beispiel

Shape s[] = new Shape[2]; 

s[0] = new Circle(10); 
s[1] = new Square(10); 

System.out.println("Area of s[0] "+s[0].area()); 
System.out.println("Area of s[1] "+s[1].area()); 

s[0].area() Anrufe Circle.area(), s[1].area() Anrufe Square.area() betrachten - und damit wir sagen, dass Shape und ihre Unterklassen polymorphe Aufrufe an die Methode ausnutzen Bereich.

5

Charlies Antwort erklärt in einfachen Worten, was Polymorphismus ist.

von dort fortsetzen, würde dies eine „polymorphe Methode“ sein:

public void Shape CreateShape() { 
    return new Circle(10); 
} 

Es ist „polymorphe“ in dem Sinne, dass seine Unterschrift sagt, du bist ein Shape bekommen, aber was Sie sind wirklich bekommen ist eine Unterklasse von Shape. Da Sie nicht genau wissen, was Sie bekommen (könnte ein Circle, ein Square, etc) sein, müssen Sie es mit der Schnittstelle der Super-Klasse (d. H. Polymorphismus) behandeln.

Ich sollte das erwähnen (möglicherweise, weil ich nur geringe Erfahrung mit Java habe) "polymorphe Methode" ist ein ungewohnter Begriff, so könnte es verwendet werden, um etwas anderes zu bedeuten. Das ist nur meine Interpretation.

0

Polymorphie ist ein Prozess der Darstellung "einer Form in vielen Formen".

Es ist kein Programmierkonzept, aber es ist eines der Prinzipien.

Example 1 : 

class A 
{ 
void print(double d) 
{ 
    System.out.println("Inside Double"); 
} 
void print(float f) 
{ 
    System.out.println("Inside Float"); 
} 
} 
class B 
{ 
public static void main(String [ ] args) 
{ 
    A obj1 = new A(); 
    obj1.print(10.0); 
} 
} 


Output : 

//save as : B.java 
//compile as :javac B.java 
//run as : java B 

Inside Double 

______________________ 


Example 2 : 

class A 
{ 
void print(double d) 
{ 
    System.out.println("Inside Double"); 
} 
void print(float f) 
{ 
    System.out.println("Inside Float"); 
} 
} 
class B 
{ 
public static void main(String [ ] args) 
{ 
    A obj1 = new A(); 
    obj1.print(10.0f); 
} 
} 


Output : 

//save as : B.java 
//compile as :javac B.java 
//run as : java B 

Inside Float 

_______________________ 

Example 3 : 

class A 
{ 
void print(double d) 
{ 
    System.out.println("Inside Double"); 
} 
void print(float f) 
{ 
    System.out.println("Inside Float"); 
} 
} 
class B 
{ 
public static void main(String [ ] args) 
{ 
    A obj1 = new A(); 
    obj1.print(10); 
} 
} 


Output : 

//save as : B.java 
//compile as :javac B.java 
//run as : java B 

Inside Float 

mehr zu wissen - http://algovalley.com/java/polymorphism.php

0

Verfahren Unterschrift polymorph ist, wenn alle folgenden Bedingungen erfüllt sind:

Es ist in der java.lang.invoke.MethodHandle Klasse deklariert.

Es hat einen einzelnen formalen Parameter vom Typ Object [].

Es hat einen Rückgabetyp von Object.

Es wurden die Flags ACC_VARARGS und ACC_NATIVE gesetzt.

In Java SE 8 sind die einzigen polymorphen Methoden die Methoden invoke und invokeExact der Klasse java.lang.invoke.MethodHandle.

JVM specification 2.9. Special Methods

0

polymorphic method in java

In der objektorientierten Programmierung wird, bezieht sich auf Polymorphismus Fähigkeit eines Programmiersprache Objekte unterschiedlich in Abhängigkeit von ihrem Datentyp oder -klasse zu verarbeiten. Genauer gesagt ist es die Fähigkeit, Methoden für abgeleitete Klassen neu zu definieren.