2017-12-12 10 views
0

객체와 나는 문제가있다 : 그 클래스를 사용하고 'B'를 만들려면,것은 지금 자바 상속을 배우고

public class A{ 
    //code of class A 
} 
public class B extends A{ 
    //code of class B 
    //code in B rewrite some methods in A 
} 

과 : 두 개의 클래스가 있다면 을 내 클라이언트 프로그램의 객체.

A objectName = new B(); 

B objectName = new B(); 

사이에 어떤 차이가 있습니까?

감사합니다.

+1

의'OBJECTNAME = 새로운 B() '에만 A''로 정의 된 속성 및 메소드에 액세스 할 수 있도록한다 - 이것은 다형성 – MadProgrammer

+0

의 일부는 제는 다른 서브 클래스에 쉽게 스와핑을 허용 할 것이다 , 예. C는 A를 연장한다. 성능이나 구현상의 이유로 코드가 여전히 작동하는지 확인 – SteveR

답변

0

이것은 다형성입니다. 첫 번째로 :

A objectName = new B(); 

할 수 있습니다이 같은 변화 기본 유형에 대한 걱정없이 objectName에 의해 reffered 객체를 변경 : 당신이 모든을 저장할 수있는 부모 타입을 통해 객체를 인스턴스화하여

objectName = new ChildOfA(); 

: 컨테이너의 자식 객체는 부모 유형 ('A')

예를 통해 생성 한로

List container = new ArrayList<A>(); 
container.add(new B()); 
container.add(new ChildOfA()); 

하지만이 것은 허용되지 않으므로 유연성이 부족합니다.

container = new ArrayList<B>(); 
container.add(new ChildOfA()); //error because childOfA is not of type of B