2011-01-05 2 views
2

저는 SCJP 테스트를 위해 자바 언어를 공부하고 있습니다.Java에서 다형성 메서드는 무엇입니까?

"다형 방법"을 조금 이해하기 어렵습니다.

나를 설명해 주시겠습니까? 또는 링크를 제공하나요?

+0

용어에 문제가 있습니까 (즉, 말하듯이 도움이됩니까?)? 아니면 다형성의 개념에 문제가 있습니까? – delnan

+0

먼저 다형성을 이해합니까? – jzd

+0

[Java의 다형성에 대한 Sunoracle 자습서] (http://download.oracle.com/javase/tutorial/java/IandI/polymorphism.html) – birryree

답변

16

"다형성"은 "많은 모양"을 의미합니다. Java에서 동일한 이름을 사용하여 다른 작업을 수행하는 하위 클래스가있는 수퍼 클래스를 가질 수 있습니다. 전통적인 예는 수퍼 클래스 Shape이고 서브 클래스는 Circle, SquareRectangle이고 방법은 area()입니다. 따라서 우리가 Shape와 그 서브 클래스는 방법 다형성 호출을 악용 말 -

따라서, 예를 들어

// 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; } 
} 

지금 예를

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() 전화 Circle.area(), s[1].area() 전화 Square.area()을 고려 지역.

5

찰리의 대답은 다형성이 무엇인지 간단히 설명합니다. 거기에서 계속

, 이것은 "다형성 방법"이 될 것입니다 :

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

그것은이 서명하면 'A Shape를 받고 다시,하지만 당신은 점점 정말을 무엇 말한다 있다는 의미에서 "다형성"입니다 Shape의 하위 클래스입니다. 귀하가 무엇을 얻고 있는지 정확히 알지 못하기 때문에 (Circle, Square 등) 수퍼 클래스 인터페이스 (즉, 다형성)를 사용하여 처리해야합니다.

나는 (아마도 자바에 대한 약간의 경험이 있기 때문에) "다형성 방법"은 익숙하지 않은 용어이므로 다른 것을 의미 할 수도 있습니다. 이것은 단지 나의 해석 일뿐입니다.

0

다형성은 '하나의 양식을 여러 형태로 표현하는 과정입니다.

프로그래밍 개념은 아니지만 원칙 중 하나입니다.

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 

더 알고 - 다음의 모든 사항에 해당하는 경우 http://algovalley.com/java/polymorphism.php

0

방법은 다형성 서명입니다 :

그것은 java.lang.invoke.MethodHandle 클래스에 선언되어있다.

Object [] 유형의 단일 형식 매개 변수가 있습니다.

반환 유형이 Object입니다.

ACC_VARARGS 및 ACC_NATIVE 플래그가 설정되어 있습니다.

Java SE 8에서는 유일한 서명 다형성 메소드가 java.lang.invoke.MethodHandle 클래스의 invoke 및 invokeExact 메소드입니다.객체 지향 프로그래밍에서

JVM specification 2.9. Special Methods

0

polymorphic method in java

는 다형성은 데이터 유형 또는 클래스에 따라 다르게 오브젝트를 처리 할 수있는 프로그래밍 언어의 능력을 말한다. 보다 구체적으로는 파생 클래스의 메서드를 재정의하는 기능입니다.