2023년 03월 18일 - 넷째 주 수업!
이제 벌써 한달째 되는 넷째 주 수업을 시작했다!!
점점 어려워 지는중이다,,
글을 쓰는 것도 점점 힘들지만 열심히 써야지~~~~
셋째 주 수업에 이어서 배열에 대해 실습을 한번 더 작성을 해본 후 다음 단계로 넘어갔다.
학생들의 이름이 들어가있어서 이미지는 올리지 못할 것 같고, 설명을 하자면!
배열의 종류(문자, 정수, 객체)별로 코드를 작성해서 결과값이 어떻게 나오는지까지 확인을 해보고 넘어갔다!
다음으로 배운 내용은 상속 내용이다.
상속은 다중상속을 할 수 있을까? 정답은 X입니다!
상속은 다중상속이 불가능하다! 이유는?
다중상속을 허용하면 여러 부모 클래스로부터 같은 이름의 메소드를 상속받게 되는데, 이때 메소드의 내용이 애매해져서 충돌이 발생할 수 있기 때문에 불가능 한 것이다.
상속을 배우기 위해 Animal, Human, Tiger, AnimalMain 클래스를 생성해 준 다음 코드 작성을 했다.
세 개의 클래스를 확인해보자면, Human 과 Tiger 클래스가 상속받은 클래스이다.
위에 이미지를 보면 extends 키워드를 작성해 놓았는데 상속을 받기 위해 작성한 키워드이다.
상속받을클래스 extends 부모클래스 형식으로 작성을 한 것이다.
그렇기 때문에 작성한 내용을 보면 Animal 이 부모클래스, Human, Tiger 는 자식클래스로 작성되어있다.
Human클래스에 아래 추가로 오버라이딩을 시켜주었다.
Override 는 오버라이드 또는 오버라이딩이라고 읽는데,
오버라이딩이란 재정의 해주는 것으로, 이름만 같고 내용은 달라도 된다!
Override 앞에 @ 가 입력되어 있는데 이것은 어노테이션이라고 읽는다.
여기서 Human 은 생성자이다. 이유는 클래스와 이름이 같으니까!
그리고 작성되어 있는 내용중에 super 라는 것이 있는데 super 는 부모 생성자를 호출하는 것이다.
작성해놓은 다음 메인 클래스에 호출을 해온 후 출력된 내용을 확인해 보면?
생성을 해주고나서 메소드 호출을 해주었다.
메소드를 호출한 후 출력시킨 내용을 확인해 보자면!
Animal 클래스의 생성자가 먼저 호출되고, Human 클래스, Tiger 클래스 순서대로 출력되는 걸 확인할 수 있다!
상속에 관해서 한번 더 알아보기 위해 Factory 패키지를 만들어서 클래스들을 만들고 어떻게 작성이 되는지, 어떻게 출력이 되는지 확인해보았다!
여러개의 클래스를 만들었다. LG, Samsung 팩토리 클래스를 생성해서 메인에 작성했을 때 어떻게 나오는지 여러 메인 클래스를 만들어서 확인해보았다.
위에 이미지처럼 메인체크 하지 않은 클래스를 만들었다.
삼성과 엘지 공장을 가동한다는 가정을 만들어서 내용을 적어주었다.
그리고나서 Main 클래스로 여러개 만들었으니까 그 내용에 대해 알아보겠다!
LG, Samsung 팩토리 객체 생성을 먼저 해준다. 생성을 해주고 공장을 3개 돌린다는 가정을 만들어서 코드 작성을 해주었다.
새로운 객체를 만든 곳에 또 다른 새로운 객체를 넣어주고 그 객체에 맞춰서 조건을 걸어준 다음 조건이 들어갈 수 있게 작성해 주었다.
start stop 메소드를 만들어서 작성해주고 출력을 해보았다.
Factory에 작성해놓은 '공장을 가동합니다' 와 '공장을 멈춥니다' 라는 말이 차례대로 출력이 되고, Main 클래스에 작성해놓은 내용이 조건에 맞춰서 출력이 된 걸 확인할 수 있다.
Main3 만든 클래스를 열어서 코드를 작성해 보았다.
객체를 생성해서 위의 내용과 비슷하게 작성을 했지만 여기서 차이점은 업캐스팅을 해 본 것이다.
근데 업캐스팅을 한 내용을 보면 다운캐스팅을 하는 것과 같은 방식으로 작성을 했다.
여기서 알 수 있는 것은 업캐스팅도 다운캐스팅 방식으로 작성을 할 수 있는 것이다.
위의 작성 내용을 출력해보면?
주소값이 출력된 걸 확인할 수 있다.
Main4 에 작성한 내용을 확인해 보면 Main3에 작성한 내용과 비슷하지만 여기는 조건문을 걸어서 작성을 해주었다.
LG, Samsung Factory 에 작성되어 있는 내용이 조건에 걸리면서 출력된다.
내용을 확인해 보면 다운캐스팅한 내용이 출력이 되고, Samsung Factory 인 0번째 객체에 LGFactory 를 넣었을 때 false 로 나온다.
그리고 아래 조건문에 걸려서 조건에 맞는 내용이 출력된다.