수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

자바 업캐스팅에 관한 질문입니다.

재미

2023.04.01

public class shape
{
int j = 1;
public void draw()
{
System.out.println(draw shape);
}}
public class circle extends shape
{
int i = 2;

public void draw()
{

System.out.println(draw circle);
}

/*public static void main(String args[])
{

circle c = new circle();shape s = c;

System.out.println(c); //같은 메모리
System.out.println(s); //같은 메모리

s.draw();
System.out.println(s.i); //오류가 남(??)

System.out.println(s.j); //1이 출력이 됨

//s.draw2();
}*/
} circle클래스에서shape s = c;업캐스팅을 하였습니다.

그럼 s.i해도 오류가 나지 않고 2라는 값이 출력되어야 하지 않습니까?shape s = c;

System.out.println(c); //같은 메모리
System.out.println(s); //같은 메모리
하면 같은 메모리를 가지고 있습니다.

아 그리고 이상한건 s.i 는 않되는데 왜 s.draw();는 어째서 되는 것입니까?

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 보물선

    만약에 circle c = new circle(); 를 아래처럼한다면 또 달라집니다.

    circle c = (circle)new Shape();

    라고 되어 있다면 어떤결과가 날까요?

  • 천사

    shape s = c;
    부모클래스형으로 업캐스팅이 되었기 때문에 자식클래스의 변수를 마음대로 사용할수 없고요.
    상속을 받은 자식클래스는 부모클래스의 모든것을 직접적으로 사용할수 있지만(private 제외)
    부모클래스로 형변환된 상태에서는 자식의 것을 자기것처럼 사용불가능 하다고 보면 됩니다.
    다시 자식클래스로 다운캐스팅해야 마음대로 직접적인 접근이 가능하죠.
    draw(); 메서드의 경우는 부모클래스와 자식클래스에 모두 선언이 되어있기 때문에
    당연히 부모

  • 치리

    자바의 다형성을 공부하실때엔 2가지만 명심하면 됩니다.

    1. 실제 생성된 객체의 타입과 2. 생성된 객체를 담는 변수의 타입 입니다.

    호출가능한 변수와 메서드는 변수의 타입에 의해 결정되고

    실제 호출되는 메서드는 최종적으로 오버라이딩한 메서드입니다.

    문제를 보면

    circle c = new circle();
    c변수는 생성된 circle의 인스턴스를 가리킵니다.
    c가 가리키는 객체는 shape의 자식이기 때문에 i와 j를 다가지고 있

번호 제 목 글쓴이 날짜
2699380 메뉴가 계단식으로 나타나요.. ㅠ.ㅠ (5) 스릉흔다 2025-06-25
2699354 영문 웹폰트 관련 질문입니다!!! (1) 치킨마루 2025-06-25
2699329 윈도우 미디어 플레이어 URL 질문!!! (1) 제철 2025-06-25
2699296 동영상 배경 질문드려요!!!!!!!!!!!!!! 핫파랑 2025-06-24
2699214 position:fixed 에 대한 질문입니다.. (7) 사이 2025-06-24
2699183 제이쿼리 이미지 슬라이드 위치값 수정 초엘 2025-06-23
2699153 테마[ADORABLE]에서 페이지생성시 하위페이지는 2개밖에 안되나요? 흰여울 2025-06-23
2699129 네이버 블로그 또는 사이트의 글을 불러오기 갤원 2025-06-23
2699070 탭메뉴처럼 셀렉트 박스를 이용해서 내용을 출력할 수 있는 방법이 있을까요. (3) 큰꽃늘 2025-06-22
2699016 인터넷이 안되는 환경에서 validator설치방법 (3) 은송이 2025-06-22
2698988 대체 C++ 6.0 exe 아이콘은 어떻게 넣는건가요? 외국녀 2025-06-22
2698960 음성파일을 embed로 작업했는데..웹 표준코딩으로 변경하려면 어떻게 해야하나요? (1) 잎새 2025-06-21
2698932 메뉴목록 풍선창 만들기 html (2) 하늘이 2025-06-21
2698901 http://www.zeitgeistbot.com/ 이 사이트처럼 움직이는 효과를 무엇이라고 하나요? 누림 2025-06-21
2698876 table width값 크로스브라우징에 대한 문의 (2) 볼수록매력 2025-06-21
2698849 c언어 질문. (3) 아름나 2025-06-20
2698823 setInterval 이벤트 제거 하려면... 가온길 2025-06-20
2698796 이 오류를 이해를 못하겠어요 Addicted 2025-06-20
2698712 IF 문 이 계속 오류가 나요 (2) 옆집오빠야 2025-06-19
2698687 이미지를 클릭하면 그 이미지를 다운받게해주는 방법 질문요 ^^ (미해결) (5) 해지개 2025-06-19
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com