2012-04-03 4 views
0

어딘가에서 우선 순위를 읽으면 다형성을 얻는 방법입니다. 다형성 (Polymorphism)은 객체가 유형에 따라 동작을 다양하게하는 기능입니다.다른 하위 클래스에 대해 동일한 기능을 재정의하는 것은 다형성입니까?

이제 다른 하위 클래스가 부모 클래스의 멤버를 재정의하면 다형성을 부여한다고 말할 수 있습니까? 또한

이제 A1 그 A로부터 상속 따라서 in B 인쇄되고, B의 모든 구성원을 사용 지금

B b=new B(); 
C c=new C(); 
A a1=b; 
A a2=c; 
a1.hello(); 
a2.hello(); 

할 경우

class A 
{ 
public void hello() 
{ 
printf("in A"); 
} 
} 

class B extends A 
{ 
public void hello() 
{ 
printf("in B"); 
} 
} 

class C extends A 
{ 
public void hello() 
{ 
printf("in C); 
} 
} 

; 그리고 마찬가지로 a2?

답변

0

상속을 통해 클래스를 둘 이상의 유형으로 사용할 수 있습니다. 인터페이스를 구현하는 경우 자체 유형, 모든 기본 유형 또는 인터페이스 유형으로 사용할 수 있습니다. 다형성은 파생 클래스뿐 아니라 기본 클래스에도 중요합니다. 기본 클래스를 사용하는 모든 사용자는 실제로 기본 클래스 유형으로 형변환 된 파생 클래스의 객체를 사용할 수 있습니다.

다른 말로하면 "다른"동작을 가질 수있는 기본 클래스를 사용할 때마다 다형성이 있습니다. 재정 다형성을 가지고 있지만 어떤 메소드를 오버라이드 (override)하지 않는 인터페이스에 대해 생각하는 단지 방법입니다하지만 당신은 여전히 ​​다형성

0

다형성은 일반적으로 특정을 무시 (다른 방식으로 인터페이스를 구현) (또는 파생 된) 지식을 가질 수 있습니다 각 클래스 인스턴스의 기본 클래스 포인터 (또는 참조)의 컬렉션을 통해 작업하여 동적 디스패치가 자동으로 특정 재정의 된 파생 함수를 호출하도록합니다.

고전적인 예는 우리가 Shape 인터페이스의 자신의 버전을 구현하는 것이 모두 SquareCircle 파생 클래스를 가지고있는 인터페이스 (예 : 기능 중 하나가 .area()를 수)를 정의하는 Shape 기본 클래스입니다 (예를 들어, 각 자신의 .area() 계산을 선택할 수도 있습니다. 우리는 모양 개체의 컬렉션이있는 경우, 우리는 특정 세부 사항을 괴롭 히고없이 작동 할 수 있습니다 :

area = 0 
for shape in shapes: 
    area += shape.area() # dispatches to specific shape's area() function 
1

내가 최우선 당신이 다형성을 얻을 수있는 수단이다, 어떤 곳을 읽었다.

대체는 다형성을 의미하지 않습니다. 당신이 재정의하거나 여전히 그렇지 않으면 다형성이 될 수 있습니다. 다형성의 좋은 정의는 여기에서 찾을 수 있습니다 : Polymorphism - Define In Just Two Sentences

다형성의 유형에 따라 행동을 변화 할 수있는 개체의 능력이다.

필요하지 않습니다. 예 : Animal 클래스는 Eat 메서드 (입으로)를 구현했으며이 클래스는 많은 하위 클래스를 말합니다. 입으로 먹지 않는 한,이 메소드를 오버라이드 (override) 할 필요는 없습니다.따라서 하위 클래스는 Eat 메서드를 구현하지 않고 Dog 동물 인 다형성을 찾을 수 있습니다.

지금 난 그냥 다른 서브 클래스가 멤버 부모 클래스의 를 오버라이드 (override) 할 경우에 다음 날 다형성을 제공 말할 수 있습니까?

당신은 말할 수 있습니다 만, 다시 말하면, 무시하지 않고도 다형성을 얻을 수 있습니다.

YOUR CODE 

직접 사용해 볼 수 있습니다.

관련 문제