상속 관계에서는 무조건 부모의 디폴트 생성자를 먼저 출력 함 --> a 출력 내가 가지고 있는 --> c 출력 두번째는도 명시적으로 부모의 무언가를 호출하지 않았기 떄문에 부모의 기본 생성자를 출력한다 --> a 출력 내것도 출력 ---> d 즉 자식은 무조건 부모를 따라야함 부모가 가지고 있는 무언가를 무조건 호출해야함 super로 명시하지 않으면 묵시적으로 부모의 기본생성자 호출!!!! 변수는 가까운걸 선택해야함 b1.a는 내가 가까움 20 출력 b2는 부모가 가까움 10 출력 어렵네요 명쾌한 해설 감사합니다.!
안녕하세요~~~ 생성자는 아버지가 날 낳던, 내가 날 낳던 무조건 부모부터 수행을 하게 됩니다. 아버지가 날 낳은 형태를 정리한 영상이 있는데요~~ ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-GS9Cr--ymVE.html 이걸 참고해주시면 좋을 듯 합니다. 감사합니다. ^^
안녕하세요~~~ 명시적으로 super 를 쓰게 되면 묵시적으로 인자없는 생성자는 타지 않습니다. super(); 이렇게 하면 부모의 인자 없는 생성자를 타고 자식의 생성자를 타는건 똑같습니다. super(x); 이렇게 하면 부모의 인자 있는 생성자를 타고 자식의 생성자를 타는건 똑같습니다. 도움이 되셨으면 좋겠습니다. ^^
선생님 궁금한점이있어 질문 남깁니다! A b2 = new B(1) 에서 A를 출력한후에서 D를 출력하는 부분에서 부모 객체가 가지고 있지 않은 메서드를 어떻게 사용한건지 궁금합니다 부모 A형태로 B(1) 인자값 메서드를 넘긴것인데, A형태에서 B(1)라는 메서드가 없어 오버라이딩 된 메서드도아니고, 자식한테만 있는 메서드인데 실행이 가능한건가요 ??
지금 포인터 이런게 문제가 아니고 시험전 유일하게 좀 헷갈려서 반복해서 보고있는게 생성자 하나였는데 이걸 딱 올려주시네요 정말 감사드립니다 이 도움으로 꼭 합격하고 싶네요 디폴트라는게 위에 먼저 적혀있거나 밑에 적혀있거나 순서상관없이 괄호안에 빈처리로 해놓은 A() 이런게 디폴트인건가요?
영상 올라왔네요ㅎ 아마 다른분들도 저랑비슷한 생각을하셨을꺼에요. 인자받았으니 저렇게나오는게 맞는데라고 생각했다가 틀려버렀네요.ㅠ 상속관계에서 super가있는지 꼭확인하고 없다면 묵시적으로 부모 호출된다는거 꼭기억하겠습니다.ㅠ 와 제대로낚였네요 . 근데 궁금한건 public A(int x)이놈도 인자값이있는데 왜 public A()여기로 호출될까요?
선생님 마지막의 마지막까지 응원해주셔서 감사합니다! 상속&오버라이딩 문제가 유독 어렵게 느껴지는데요, 강의 중에 b2에는 a=0, B.a=20 이렇게 두가지 값을 가지고 있는데, ‘B클래스에서 오버라이딩한 메서드를 사용할때는 B.a의 값을 사용한다’고 하셨잖아요. 그럼 상속했을때는 부모클래스에 있는 함수만 사용가능하고 자식클래스에만 있는 함수는 사용불가니까 (..맞나요? 머리 속이 뒤죽박죽이예요ㅠㅠ) 오버라이딩된 함수를 제외한 다른 함수들은 부모로부터 상속받은 a=10을 이용해야한다 라고 이해하면 될까요..?
@@HeungSsaem 답변 감사합니다. 따로 코드를 보고 질문드린건 아니고, 강의에 나온 코드를 보다가 상상해서(?) 질문드렸어요 ㅠㅠㅋㅋㅋ 예를들면 저 코드에서 A클래스에 함수 2개가있고 B클래스에서 그 중 하나만 오버라이딩한 상황일 때, A b2 = new B(); 로 인스턴스를 생성했다고 가정하면 main함수에서 1) 오버라이딩한 함수 호출 -> B.a값 사용 2) 오버라이딩하지 않은 함수 호출 -> (부모) a 값 사용 이렇게 이해하면 되는가 싶어서요 ㅠㅠㅠ 난해한 질문 드려 죄송합니다 ㅠㅠ