자바는 강력한 형식의 언어입니다.
기본 유형에는 표준 변환 및 자동 승격이 적용됩니다.
유형 호환성은 엄격하게 적용됩니다.
일반적으로 한 클래스의 참조 변수는 다른 클래스의 객체를 참조할 수 없습니다.
클래스 X와 Y가 구조적으로 동일하더라도 유형이 다르기 때문에 X의 참조를 Y의 객체에 할당하는 것은 불가능합니다.
일반적으로 개체 참조 변수는 해당 유형의 개체만 참조할 수 있습니다.
유형 부과의 예외는 슈퍼클래스의 참조 변수가 해당 슈퍼클래스에서 파생된 모든 하위 클래스의 객체를 참조할 수 있다는 것입니다.
Y는 X에서 파생되므로 x2는 Y의 개체에 대한 참조를 받을 수 있습니다.
참조하는 개체의 유형이 아닌 참조 변수의 유형에 따라 액세스할 수 있는 멤버가 결정됩니다.
하위 클래스 객체에 대한 참조가 슈퍼클래스 변수에 할당되면 슈퍼클래스에 의해 정의된 멤버에만 액세스할 수 있습니다.
예제에서 x2는 Y의 멤버 b에 액세스할 수 없습니다. 클래스 X는 하위 클래스에 의해 추가된 멤버를 인식하지 못하기 때문입니다.
슈퍼클래스 변수에 할당된 하위클래스 참조는 특히 클래스 계층 구조에서 생성자를 호출할 때 일반적입니다.
하위 클래스는 슈퍼클래스의 객체를 매개변수로 사용하여 객체 복사본을 생성하는 생성자의 이점을 누릴 수 있습니다.
이 프로그램에서 t2는 t1에서 구성되므로 동일합니다.
이 삼각형 빌더의 주의 사항:
// 다른 객체로부터 하나의 객체를 구성합니다.
삼각형(삼각형 ob) {
슈퍼(ob); // 객체를 TwoDShape
의 생성자에 전달합니다.
스타일 = ob.style;
}
Triangle 유형의 객체를 수신하고 (super를 통해) 이 TwoDShape 생성자에 전달합니다.
//다른 객체로부터 하나의 객체를 구성합니다.
TwoDShape(TwoDShape ob) {
너비 = ob.너비;
신장 = ob.height;
}
TwoDShape() 생성자는 TwoDShape 유형의 객체를 수신할 것으로 예상합니다.
Tangle() 하위 클래스의 생성자는 이를 Triangle 유형의 객체에 전달합니다.
이는 TwoDShape와 같은 슈퍼클래스의 참조가 Triangle과 같은 하위 클래스의 객체를 참조할 수 있기 때문에 작동합니다.
파생 클래스 객체의 참조를 슈퍼클래스 생성자로 전달하는 것이 허용됩니다.
슈퍼클래스 생성자 TwoDShape()는 Triangle 하위 클래스의 추가 멤버에 관계없이 TwoDShape 클래스에 속한 멤버만 초기화합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3