소개
안녕하세요. @weekendcode 라는 유튜브 채널을 운영하고 있습니다.
비전공자, 코딩에 관심 있는 학생들을 위해 최대한 쉽게 설명하고자 노력하는 강사입니다.
강의
전체1수강평
- 합격했습니다!
zzing199842
2024.09.13
0
게시글
질문&답변
2024.09.14
30분 String val
안녕하세요, 객체가 태어날 때는 생성자를 통해서 태어납니다. 생성자는 클래스와 이름이 동일해야합니다. getName은 파라미터를 문자열 1개로 입력받지만, 클래스(Car)와 이름이 동일하지 않습니다. 클래스와 이름이 같아야 합니다.
- 0
- 2
- 17
질문&답변
2024.09.14
강의자료를 공유 부탁드립니다.
안녕하세요, 개인적으로 강의자료를 보내드리지는 않습니다. 다만 오늘까지는 모든 영상의 코드를 PDF로 바꿔서 올려드릴 예정입니다!
- 0
- 2
- 29
질문&답변
2024.09.14
첫구매 자료파일
안녕하세요. '인프런 AI 인턴'은 여기서 자동으로 달리는 답변입니다. 나머지 코드 PDF는 오늘 중에 전부 작업해서 업로드 예정입니다. 우선 영상위주로 학습 부탁드립니다..^^; PDF 파일이 있는 영상은 나중에 영상이 업데이트 되면서 첨부를 해둔 것이라, 없는 강의가 아직까지는 대다수입니다. 최대한 빨리 올리도록 하겠습니다.
- 0
- 2
- 49
질문&답변
2024.09.13
while 구문에 a++ 이면 왜 6까지 가나요?
안녕하세요, 우선 제가 작성한 a가 가장 위에 적혀있어서 순서 상 조금 헷갈리게 보일 수는 있겠습니다만, 설명을 잘 들어보시면 a는 먼저 5가 들어가고 나올 때 6이 되어서 나오는 케이스를 말씀드린 것입니다. 지금 while에 들어갈 때는 a가 5입니다. 그리고 아랫 줄에서 연산되면서(a++) 6으로 변합니다. 그래서 a가 5로 들어간 상태에서 최종 a의 값은 5가 됩니다. 그리고 다음에 올라갈 때 체크가 되어서 a는 6인 상태로 끝나게 되는 것입니다. 그러니까, 마지막 경우는 a가 5로 들어가는 상황이라고 봐주시면 되겠습니다. 가장 마지막 오른쪽 줄은, 모든 while문이 실행됐을 때의 변수들의 최종값이 작성된 것입니다. 이해에 도움이 되셨을까요..?
- 0
- 2
- 22
질문&답변
2024.09.13
생성자를 언제 접근하는지 존재하는지 안하는지 구분이 헷갈립니다.
안녕하세요, Java 생성자에 원칙이 분명히 있긴 합니다만, 한 줄로 딱 명료하게 설명하기는 어렵습니다. 우선, 기억하면 좋은 케이스와 원칙을 설명드리겠습니다. 1. 자식 클래스로 인해서 태어나는 객체의 경우, 부모 클래스의 기본 생성자는 반드시 호출한다. 단, 자식에서 명시적으로 부모의 기본 생성자가 아닌 다른 생성자(ex. 파라미터가 있음)를 부를 때는 예외로 한다. → 예를 들어 super(10)을 하면 int 형태 1개짜리 생성자를 부르는 것이지, 기본 생성자를 부르는 것이 아닙니다. 그런데 또 부모 생성자에 갔더니 본인이 스스로 다른 생성자를 부르는 경우에는 그곳을 따라가야 합니다. → Java 코드에 기본 생성자가 없는 코드가 예제로 나와도 있다고 생각하셔야 합니다. (코드가 변환되는 과정에서 기본 생성자가 알아서 생깁니다.) 다만 아무 일도 일어나지 않습니다. 2. 같은 클래스의 생성자는 2번 호출되지 않는다. → 이 부분 헷갈려하시는 분들이 특히 많습니다. "생성자가 2번 호출 안되는데 왜 본인들끼리는 여러 번 부르나요?"는 사실 1번 호출되는 것으로 봐야 합니다. 아직 객체가 탄생하지 않은 상태에서 서로 부르고 있는 것이라서요. main 함수 내에서 객체가 탄생할 때 전체적으로 생성자가 호출되는 것이 끝난 경우에는 더 이상 생성자는 호출되지 않습니다. 이건 예제로 살펴봐야 하는 것이라 글로 설명하기는 좀 어렵네요. 아래 예시 코드 보시겠습니다. class Parent { public Parent() { this(1); System.out.println(2); } public Parent(int message) { System.out.println(message); } } class Child extends Parent { public Child() { System.out.println(3); } } public class Main { public static void main(String[] args) { Child child = new Child(); } } 위의 코드는 아래와 같이 출력됩니다. 1 2 3 지금 이 상황은 어떻게 해석해야 할까요? 우선, 자식은 부모를 상속 받았으니까 태어날 때 부모 클래스에 있는 생성자를 "무조건" 호출합니다. 보통 기본 생성자를 부르게 되어있죠. 자식 생성자를 보니 super()로 해서 특정 생성자를 부르지 않고 있습니다. 그러면 그냥 부모로 가서 순서대로 보면 되겠습니다. 부모 클래스 가보니까 this(1)로 스스로 int 형태 1개짜리 생성자를 부릅니다. 이건 생성자가 2번 실행된 것으로 봐야할까요? 아닙니다. 아직 해당 객체가 태어나지 않았습니다. "생성되는 과정"에 있는 것이죠. 이런 류의 코드를 말씀드린 것입니다. 3. static의 경우 앞의 형태를 따라간다. hiding만 생각하시면 됩니다. 부모 형태(변수 앞에 타입 부분)로 태어났는데 static이 붙어 있으면 자식에서 재정의했다고 하더라도 타입 부분에 구현된 것을 사용합니다. class Parent { public static void display() { System.out.println("P"); } } class Child extends Parent { public static void display() { System.out.println("C"); } } public class Main { public static void main(String[] args) { Parent parent = new Parent(); Parent childAsParent = new Child(); Child child = new Child(); parent.display(); childAsParent.display(); child.display(); } } 위 코드의 출력값: P P C 보통 자식이 재정의하면 자식 메서드가 사용됩니다. 그런데 저 경우에는 위의 두 코드가 모두 P로 실행됩니다. 맨 마지막 코드는 왜 C가 될까요? 타입이 Child로 태어났기 때문입니다. 이 정도로 정리 드릴 수 있을 것 같은데, 다른 것들은 모두 코드를 보면서 이해하는 것이 좋습니다. 글 몇 개로 모든 경우를 설명드리기가 어렵네요. 이해에 도움이 되셨을까요?
- 0
- 2
- 20