해결된 질문
작성
·
27
·
수정됨
0
this
는 객체를 지칭하는 용어라고 이해했는데요
이 코드에서는 객체가 child 생성자에 child 형태임에도 불구하고this(5) // line4
에서 parent 클래스의 생성자를 불러오는 이유가 궁금합니다
코드를 돌려보니 항상 parent클래스 안에 해당형태의 생성자가 있는지만 찾고, 없으면 에러를 일으키더군요.
this는 코드가 쓰여있는 자리에만 귀속되는 대명사 인지, 구동할때시점으로 객체를 지칭하는건지, 어떤원리로 작동하는지 궁금합니다. 매번 케이스마다 외워야 해서,, 또 새로운 문제가 나오면 당황하고 틀리고,, 교수님,, 상속이 너무 어렵습니다,,, ㅠㅠ
https://inf.run/DHwjP 21분 09초에서의 this 사용과 비교하여 헷갈립니다.
답변 2
0
this()는 이것의 생성자라는 뜻입니다.
두번째 영상은 this를 리턴합니다. this()가 아닙니다.
this는 그 객체 자체를 뜻합니다.
this.a <- 내가 대신하는 객체가 가지고 있는 a라는 변수
this(3) <- 나의 정수 1개짜리 생성자를 호출해서 3을 넣어라
this.apply() <- 내가 가지고 있는 apply 메서드를 실행해라
this가 사용되는 방법론은 저렇게 밖에 없습니다.
차이가 있다면 괄호 여부, 변수명 여부, 메서드명 여부입니다.
두 가지가 다르다는 것을 다시 보시면 알 수 있습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 정훈님.
Java의 this와 super에 관한 질문을 주셨군요. 상속과 생성자의 호출과 같은 객체 지향 프로그래밍 특성은 때때로 혼동을 줄 수 있습니다. 질문하신 내용을 정리하며 설명드리겠습니다.
this()
생성자 호출:
this()
는 현재 클래스의 다른 생성자를 호출할 때 사용합니다. 객체가 생성될 때 초기화 로직을 재사용할 수 있도록 돕는 역할입니다.this
가 포함된 생성자 호출은 같은 클래스 내에서만 가능합니다. 즉, 대상이 되는 다른 생성자가 반드시 같은 클래스에 존재해야 하며, 부모 클래스의 생성자를 호출할 수 없습니다.구체적인 코드 동작:
this(5);
가 포함된 것이라면, 이는 현재 클래스(여기서는 Child
)의 다른 생성자인 Child(int x)
를 호출하려는 의도로 사용됩니다. 하지만 자식 클래스에서 this()
를 사용해 부모 클래스의 생성자를 직접 호출할 수는 없습니다.Child
클래스 내에 정의되지 않았기 때문일 가능성이 큽니다.super()
와의 차이점:
super()
는 부모 클래스의 생성자를 호출할 때 사용됩니다. 이는 무조건 자식 클래스의 생성자에서 첫 줄에 위치해야 합니다.super
를 사용하지 않고 this
를 사용한다면, 호출되는 대상은 부모 클래스의 생성자가 아닌 자신의 다른 생성자입니다.이러한 개념을 이해하고 있다면 다양한 코딩 시나리오에서 상속과 객체 생성과 관련한 문제를 보다 쉽게 해결할 수 있을 것입니다. 줄곧 외우는 것보다, 이 구조를 이해하는 것이 중요합니다. 필요하다면 Java의 생성자와 상속에 대한 예시를 통해 추가 정보를 확인해 보세요.
관련된 예제와 구체적인 코드 작업은 저희 강좌의 해당 챕터에서 다시 확인해 보시길 추천합니다. 이미 존재하는 강의 내용 중 Java에서 this와 super 키워드
파트에서도 이러한 개념들이 다루어지고 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
this는 코드가 쓰여있는 자리에만 귀속되는 대명사 인지, 구동할때시점으로 객체를 지칭하는건지, 어떤원리로 작동하는지 궁금합니다. 매번 케이스마다 외워야 해서,, 또 새로운 문제가 나오면 당황하고 틀리고,, 교수님,, 상속이 너무 어렵습니다,,, ㅠㅠ
https://inf.run/DHwjP 21분 09초에서의 this 사용과 비교하여 헷갈립니다.
천천히 답변주세요 🙂