14:28 생성자 조건 충족 안됐을 때 에러 - 생성자 첫줄에 반드시 다른 생성자를 호출해야한다 - 기본 생성자 작성 필수
@intellj33 жыл бұрын
4.17
@오빈-k6k Жыл бұрын
상속받은 클래스의 인스턴스를 생성할 때 생성자를 호출하게 되고 생성자의 첫줄에 생성자를 호출하는 코드가 없다면 자동으로 부모 생성자를 호출하는 super()키워드 삽입 이때 부모에서 매개변수 생성자만 있게 된다면 기본생성자가 없으므로 오류가 발생 왜냐하면 super()키워드는 부모의 기본생성자를 호출하기 때문 해결방안 : 부모 클래스에서 매개변수 생성자만 있다면 자식클래스에서 조상의 인스턴스 변수에 맞춰서 생성자를 호출 하는 코드를 작성해야 함
@이범우-n5l Жыл бұрын
궁금한 게 있습니다! 6:28에 Child클래스 타입의 참조변수 c와 만들어진 인스턴스의 바깥에서 super과 this가 주소 100을 가리키고 있습니다. 자바의 정석 책 330쪽에 보면 '모든 인스턴스메서드에는 자신이 속한 인스턴스의 주소가 지역변수로 저장되는데, 이것이 참조변수읜 this와 super의 값이 된다.'고 써 있습니다. this와 super은 인스턴스메서드 안에 있으니까 저 super와 this는 개념적으로는 method칸 안에 있다고 생각하면 될까요?
@MasterNKS Жыл бұрын
this와 super는 사실 지역변수 입니다.
@현실김-e7d3 жыл бұрын
강의 잘 듣고 있어요. 항상 감사드려요.
@kostralia4422 жыл бұрын
강의력 머박.. 스프링도 수강했습니다 선생님!!
@김충현-v3m3 жыл бұрын
복습중! 좋은 강의 감사합니다
@givemeawit Жыл бұрын
430분= 7시간10분
@davidbyeon33704 жыл бұрын
1회시청완료
@celineheo82244 жыл бұрын
기본생성자에 super()가 컴파일러가 자동으로 넣어준다는 걸 처음 알았어요.ㅠㅠ 모든 생성자는 첫줄에 다른 생성자를 호출해야한다 꼭 기억할게요
@김병은-y8j4 жыл бұрын
2회 시청 완료하였습니다.
@optional54594 жыл бұрын
1회 시청 2020-12-09 super,this super(),this() 잘 구분하기
@biang42024 жыл бұрын
1회 시청 완료 하였습니다.
@뭘안다고그렇게떠드는4 жыл бұрын
2회 시청완료!
@냥냥-s8t3 жыл бұрын
안녕하세요. 질문 드려도 될까요? 예전에 this()만 배울 때는 첫 줄에 "반드시" 생성자를 호출해야하는 것은 아니고 호출할 일 있으면 첫줄에 해야한다고 배웠던 것 같은데요. 상속 받을 때만 생성자의 첫줄에 반드시 생성자를 호출하는 것으로 이해하면 될까요?
@MasterNKS3 жыл бұрын
늘 상속은 받습니다. Object가 최고 조상이라. 항상 첫줄에 있어야하는데 안쓰면 super();가 자동 추가됩니다.
@뭘안다고그렇게떠드는4 жыл бұрын
1회 시청완료
@남붕어4 жыл бұрын
남소연 20201217 5회 시청~
@Gml-j6d Жыл бұрын
복습중에 질문드립니다. 예제, 조상 클래스에서 생성자 미작성시 object 개념으로 super 생성자가 자동 생성 된 후, 자손에서 호출할 때 생성자를 미작성할시 오류발생 이유가 위 조상에서 생성자 미작성으로 인해 오브젝트 생성자만 존재하기 때문에 끌어올 수가 없어서 인건가요? 생성자 미작성시 자동 첫출 super(); 추가는 클래스마다 동일 하다고 이해를 하면 될지 해서 질문 드립니다.
@MasterNKS Жыл бұрын
모든 클래스에 적용됩니다
@gogo-vq9pz4 жыл бұрын
2회 시청 super = 객체 자신을 가리키는 참조변수 인스턴스 메서드나 생성자에서만 사용 가능. 조상멤버와 자신멤버 구별할 때 사용(this랑 비슷) super() = 조상의 생성자 조상의 생성자 호출할 때 사용 조상 멤버는 조상의 생성자 호출해서 초기화 자손의 생성자는 자기가 선언한 것만 초기화하고, 조상 멤버는 조상 생성자로 초기화하는 것이 바람직. 생성자 첫 줄에 반드시 생성자 호출★★★★ 첫 줄이 생성자 호출이 아니면 컴파일러가 자동으로 조상의 기본 생성자 삽입. => 클래스 만들 때 반드시 기본 생성자 만들어야 에러 안 남.
@햇냥이-k4s Жыл бұрын
기본생성자 작성은 필수다. 만약 포인트 클래스에 아무런 생성자 하나도 없었음 포인트 3D가 자동으로 생성해준 슈퍼()로 인해 또 자동으로 기본생성자가 만들어져 돌아갔을탠데 매개변수 생성자가 있어서 그러질 못 했고 기본생성자를 기본적으로 작성하는 습관을 들이자. 기본생성자와 매개변수생성자 작성! 기억하자 모든 생성자는 첫줄에 다른 생성자를 호출해야한다. 상속 없는 포인트 클래스는 모든 클래스의 부모인 오브젝트 생성자를 컴파일러가 자동으로 만들어준거였고 상속받은 포인트 3D는 부모 생성자 super()호출해서 상속받은 부모 인스턴스 변수들을 초기화시켜줘야한다.
@이상수-f9l4 жыл бұрын
1회 시청 완료입니다
@활활-p2l3 жыл бұрын
부모의 부모 x를 가져오려면 어떻게 해야 할까요 ?
@MasterNKS3 жыл бұрын
그건 안됩니다. 메서드를 이용해서는 됩니다. 조상의 메서드가 조상의 조상의 x를 반환하게 하면 가능합니다. 직접 테스트해보세요
@남붕어4 жыл бұрын
남소연 20201214 1회 시청
@andrew773594 жыл бұрын
오늘도 좋은 강의 감사합니다!
@dongoh32112 жыл бұрын
1) 조상의 멤버는 조상의 생성자를 호출해서 초기화하기 2) 생성자의 첫 줄에는 반드시 생성자를 호출하기! 규칙을 암기하고 습관화하는 연습을 꾸준히 해야겠네요! 강의 감사합니다:-)
@김성현-j4c7p4 жыл бұрын
항상 감사드립니다❤️
@atomic28084 жыл бұрын
8:10 '초기화블록' 이란 단어가 생소한데요, 초기화는 생성자가 담당하는거 아닌가요?
@MasterNKS4 жыл бұрын
들다 초기화를 합니다. 6장 마지막을 다시 복습하시기 바랍니다.
@황재환-p5l3 жыл бұрын
이전에 this() 생성자 사용할때는 첫줄에 this()나 super()를 넣어주지 않았었는데 super()를 배우면서 꼭 넣어줘야한다고 말씀해주시니까 혼란스럽습니다 ㅜㅜ super() 안배울때는 넣으란말 없으셨는데 그땐 어떻게 가능했던건가요…?
@MasterNKS2 жыл бұрын
컴퍼일러가 자동으로 넣어준겁니다. 규칙이니까 외우셔야 합니다
@youngjinhwang93854 жыл бұрын
좋은 강의 항상 감사드립니다!
@jhkim24332 жыл бұрын
컴파일러가 자동으로 super();를 추가해주는데도 에러가 나는 이유는 뭔가요?
@myeongheeroh62094 жыл бұрын
좋은 강의 감사합니다.
@나나나-m7w2 жыл бұрын
생성자의 첫출에 생성자를 호출하지 않으면 생성자의 첫 줄에 super();를 삽입한다. 라는 내용이 책에도 있나요..? 제가 못찾는건지 안 보이네요
@MasterNKS2 жыл бұрын
자바의 정석 3판에 나옵니다.
@gogo-vq9pz4 жыл бұрын
5회 시청 super()는 자손 클래스 생성자에서 조상 멤버를 초기화하기 위함. this()는 같은 클래스 내 한 생성자에서 다른 생성자 호출할 때 사용. super는 객체 자신을 가리키는 참조변수. 조상 멤버와 자신의 멤버 구분할 때 사용. this도 객체 자신을 가리키는 참조변수. 지역변수와 인스턴스 변수 구분할 때 사용.
@호야-x2q4 жыл бұрын
강의 너무 좋아요 !
@hikieun3 жыл бұрын
2021/08/15 1회차 출석합니다! 이번 강의 보면서 아! 이래서 예전에 기본 생성자 넣어줘야 한다고 하셨구나!! 하면서 뭔가 신기하고 재밌었네요 ㅋㅋㅋ 예전에 따로 공부할 때 super 이해 안 됐었는데 선생님이 그림 그려주시면서 설명해 주시니까 한 번에 이해됐어요! 역시..bb 아 그리고 궁금한 점이 super()는 컴파일러가 자동 추가해 주더라도 명시적으로 항상 써주는 게 좋은 건가요??
@MasterNKS3 жыл бұрын
아뇨 꼭 필요할때만 쓰세요
@hikieun3 жыл бұрын
@@MasterNKS 아하 넵넵! 감사합니다!!☺️
@ckc_51164 жыл бұрын
안녕하세요 작가님, 자바의 정석 2판은 쉽게 구할 수 있는데 3판을 살 용의도 있습니다. 추천 부탁드려도 될까요?
@MasterNKS4 жыл бұрын
2판은 너무 오래되어서 3판이 낫죠
@이혜지-m7v4 жыл бұрын
2회 시청완료 참조변수 super - 객체 자신을 가리키는 참조변수, 인스턴스 메서드(생성자 포함)내에만 존재 - 조상 멤버와 자신의 멤버가 중복되는 경우에 구별할 때 사용 -> 조상의 멤버: super.x / 자신의 멤버: this.x 조상의 생성자 super() - 자손이 조상의 생성자를 호출할 때 사용 - 조상의 멤버는 조상의 생성자가 초기화 하도록 해야 함 -> 조상의 멤버를 어떻게 초기화해야 할지 가장 잘 아는 것은 조상이기 때문에 - 생성자의 첫 줄에 반드시 생성자를 호출해야 함 - 첫 줄에 생성자가 호출되지 않으면 컴파일러가 super()을 삽입
@강쥐-m4b2 жыл бұрын
예제 7_2 에서 조상의 x 는 super.x 자식의x는 this.x라고 구별하신다고 했는데요 메인메서드에서 super.x값을 출력하고 싶을때 System.out.println(c.super.x); 라고 하면 컴파일에러가 나는데 어떻게 해야 출력할수있을까요? //super은 객체자신을 가르키는 참조변수, static메서드 내 (메인메서드내)에서 사용불가하므로 System.out.println(super.x); 도 컴파일 에러가 나타남. 그냥 Parent p = new Parent(); 부모 객체를 생성한 후에 System.out.println(p.x);로 출력했습니다.. 이렇게 이해했는데 맞는지 잘모르겠네요 ㅠ
@MasterNKS2 жыл бұрын
클래스 내에서 super.x를 출력하는 메서드를 추가하시면 됩니다.
@짜짜-y5j4 жыл бұрын
얼마전에 실수한건데 조상의 멤버를 this로 초기화 했는데 에러가 안나서 문제가 없는 줄 알았어요! 조상의 멤버는 조상의 생성자를 호출해서 초기화해야 하는 것을 꼭 기억하겠습니다!
@mosquitoexorcist3 жыл бұрын
참조변수 super (this랑 비슷) -객체 자신을 가르키는 참조변수 -인스턴스메서드(생성자) 내에만 존재(static메서드 내에서 사용불가) -조상의 멤버(super)와 자신의 멤버(this)를 구별할 때 사용 -중복되는 경우 super, this 둘 다 가능 super() : 조상의 생성자 -참조변수 super와 전혀 관계없다 -조상의 생성자를 호출할 때 사용 -조상의 멤버는 조상의 생성자를 호출해서 초기화(상속을 받을 때 생성자와 초기화 블럭이 상속되지 않으므로) -자손의 생성자는 자신이 선언한 것만 초기화 할 수 있음(this) 그래서, 조상의 멤버를 초기화 하려면 super()로 조상클래스의 생성자를 호출 -> 조상한테 초기화 해달라고 해야함 -(모든)생성자의 첫 줄에 반드시 (다른)생성자를 호출해야함!!🎇🎇 몹시 중요 -클래스 작성 시 기본생성자 작성 필수!!!! 이것도 매우 중요
@rem-wz2mz3 жыл бұрын
모든 생성자의 첫 줄에는 반드시 다른 생성자 또는 조상 생성자를 호출해야 한다면 우리가 앞서서 기본생성자를 적어줬는데, class Car { int x = 3; Car() { } } 여기에서 기본생성자 Car() {} 가 사실은 class Car { int x = 3; Car() { super(); } } 였다는 말씀이시죠?
@MasterNKS3 жыл бұрын
네
@taiwanno.15724 жыл бұрын
13:58 중요한 내용, 잘 외워두기
@productNerdOtaku3 жыл бұрын
생성자의 첫 줄에 반드시 생성자를 호출해야 한다. -> 조상의 생성자 호출 super()
@mosquitoexorcist4 жыл бұрын
4회 시청 완료
@seongwonchae23984 жыл бұрын
4회 시청.
@thekimssalon32543 жыл бұрын
감사합니다 0302
@JacobCGYou4 жыл бұрын
아 저는 상속하면서 같은 iv는 자식이 덮어쓰겠거니라고 잘못 알고 있었는데 가만 생각해보면 덮어쓰게되면 super.x, this,x가 동시에 존재하지 않겠군요 😄 super() 파트 중 : 생성자의 첫 줄에 반드시 생성자 호출해야 하고 그렇지 않으면 java 컴파일러가 넣어준다 ** 클래스 작성할 때 기본생성자 작성 필수(위와 같은 컴파일러의 역할을 고려해야 하기 때문 간과하면 에러의 원인이 된다)
@호야-x2q4 жыл бұрын
조상멤버는 super, 자신멤버는 this. super()는 조상의 생성자. 자신이 선언한 것만 초기화. 조상은 조상이하는 것이 좋음. 생성자 첫줄에 다른생성자 호출. 기본생성자 작성 필수.
@JacobCGYou4 жыл бұрын
- super : 객체 자신을 가리키는 참조변수, 인스턴스 메서드 내에만 존재, 조상의 멤버를 자신의 멤버와 구분시 사용 - super() : 조상의 생성자, 조상의 생성자 호출 시 사용(조상의 멤버는 조상의 생성자를 호출해서 초기화) * 생성자의 첫 줄에 반드시 생성자를 호출해야 함 * 그렇지 않으면 컴파일러가 자동으로 첫 줄에 super() 삽입
@gogo-vq9pz4 жыл бұрын
4회 시청 완료!
@gogo-vq9pz4 жыл бұрын
3회 시청 완료
@Robert-zc9uo4 жыл бұрын
감사합니다!!
@sujinlee37954 жыл бұрын
201130 다혜수진지영 day8
@jinnamkung7274 жыл бұрын
좋은 강의 감사합니다:):)
@mosquitoexorcist4 жыл бұрын
2회 시청 완료!
@mirakim74144 жыл бұрын
7-10 참조변수 super. - 객체 자신을 가리키는 참조변수 >조상과 자기자신을 구분지을때 사용 (this.는 lv와 iv를 구분할때 사용) 7-11 super() >조상의 생성자를 호출할때 사용 >조상의 멤버는 조상의 생성자를 호출해서초기화 (자식은 자기가 생성한 맴버만 초기화) >생성자에 생성자를 호출할거면 첫줄에!☆ >안하면 자동으로컴파일러가 super(); 삽입
@2혜지4 жыл бұрын
3회 시청.
@collectTheMomentsNotThings3 жыл бұрын
super. 조상주소 참조변수 super() 조상의 생성자 호출 및 초기화 클래스만들때 기본생성자 작성 필수! 모든 생성자는 첫줄에 다른 생성자를 호출!
@제한해제가한번해보겠4 жыл бұрын
2020/09/16 완료
@starfish35854 жыл бұрын
1회 시청 완료!
@ckdbioksh3 жыл бұрын
2회차 완료
@정보승-n3s4 жыл бұрын
1회시청 모든생성자는 첫줄에 다른 생성자를 호출
@이성민-z2j4 жыл бұрын
4회 시청
@김충현-v3m4 жыл бұрын
2회 시청
@둥근세모-k8u4 жыл бұрын
201130 복습
@정보승-n3s4 жыл бұрын
2회시청
@둥근세모-k8u4 жыл бұрын
201102 복습
@rlagusdb1114 жыл бұрын
2회 완료
@김예찬-y6u4 жыл бұрын
감사합니다~!
@SoyouG-w1u3 жыл бұрын
강의 감사드려요 강사님 >_
@ALavigne-m1j4 жыл бұрын
12/13 1회 시청
@최호연-q1i4 жыл бұрын
최호연 1회 시청 완료
@myeongheeroh62094 жыл бұрын
7장 객체지향언어 2회독, 2020.11.10.
@mosquitoexorcist4 жыл бұрын
1회 시청 완료
@ALavigne-m1j4 жыл бұрын
12/17 4회 시청
@잠에약한하마4 жыл бұрын
이승복 1회 시청
@남궁진-e7r4 жыл бұрын
어렵네요ㅜㅜㅜ잘봤습니다
@잠에약한하마4 жыл бұрын
이승복 3회 시청
@chang-hyunlyoo19814 жыл бұрын
1회시청
@이윤하-e5i4 жыл бұрын
이윤하 1회 시청 완료
@celineheo82244 жыл бұрын
영상 너무 감사합니다 ㅠㅠ
@rlagusdb1114 жыл бұрын
1회 완료
@ALavigne-m1j4 жыл бұрын
12/19 5회 시청
@조다혜-u7y4 жыл бұрын
모든 클래스의 생성자 첫줄에 다른 생성자(this(), super())를 호출해야 한다.
@짱우-w1f4 жыл бұрын
1회 시청
@이성민-z2j4 жыл бұрын
생성자 질문 드립니다. 모든 생성자는 첫줄에 다른 생성자를 포함해야한다는 것은, 결국 상속트리의 최상단 생성자 (Object) 까지 호출되는게 맞나요? 그리고 object 호출을 통해 java의 기본적인 메소드 (ex. println, String 등) 을 항상 사용 가능해지는것으로 이해하면 될까요?