미션 완료 및 예외처리 / 출력 메소드 생성
마스터 클래스 수강!
상속과 다형성 공부
상속- 기존의 클래스를 재 사용하여 새로운 클래스를 작성하는 것.
상속을 할 경우, 부모클래스로부터 거의 모든 코드를 재사용 할 수 있다.
공통적으로 코드를 관리할 수 있기 때문에, 추가 및 변경에 용이하다는 장점이 있다.(유지보수가 쉽다!)
class Channel {
int mbc;
int sbs;
int kbs;
String pairing(){
return "mbc"+mbc+" sbs"+sbs+" kbs"+kbs;
}
}
class ChannelAdd extends Channel {
int tvn;
String pairing(){
return "mbc"+mbc+" sbs"+sbs+" kbs"+kbs+" tvn"+tvn;
}
}
다형성- 여러가지 형태를 가질 수 있는 것.
대표적으로 특정 메소드나 클래스가 다양한 방식으로 동작하게 만드는 오버로딩, 오버라이딩이 있으며,
조상타입의 참조변수로 자손타입(상속)의 객체를 다룰 수 있는 것이 다형성이다.
(자손타입의 업캐스팅)
class Channel {
int mbc =11;
int sbs =5;
int kbs =7;
String channelNum(){
return "mbc"+mbc+" sbs"+sbs+" kbs"+kbs;
}
}
class ChannelAdd extends Channel {
int tvn =20;
String channelNum(){
return "mbc"+mbc+" sbs"+sbs+" kbs"+kbs+" tvn"+tvn;
}
}
class Tv {
public static void main(String[] args){
Channel c = new ChannelAdd();
System.out.println(c.channelNum);
// 결과 : "mbc11 sbs5 kbs7 tvn22
}
}
위와 같이 조상타입의 참조변수로 인스턴스를 참조할 수 있다.
하지만, 자손타입은 조상타입의 인스턴스를 참조할 수 없다.
this와 super 키워드 차이점 공부
this- 해당 클래스 내에 선언된 변수.
super- 상속 클래스 내에 선언된 변수.
만일, Tv 클래스를 상속 받은 클래스가 있다고 했을때,
public class MyTv extends Tv {
int remoteController;
void control(){
this.remoteController = 1;
super.remoteController = 2;
}
}
객체 인스턴스 비교에 대한 공부
객체는 단순히 선언만 된 것이며, 인스턴스는 실제로 메모리에 등록된 것을 의미한다.
위와 같은 Tv클래스가 있다고 가정하였을 때,
Tv t; // 객체를 선언하였으나, 선언만 했을 뿐 메모리에 등록되지않았다.
Tv t1 = new Tv(); // 선언 후, 클래스의 인스턴스를 생성했고, 메모리에 객체가 등록되었다.
위처럼 선언만 된 것을 객체, 그리고 실제로 실체화 된 객체를 인스턴스라 한다.
SOLID 원칙 - SRP 단일책임원칙 공부
한 클래스는 하나의 책임만 가져야한다.클래스는 하나의 책임을 완전히 캡슐화 해야함을 일컫는다.
이렇게 한 클래스는 한 목적에 집중 하도록 유지하는 것은, 클래스를 더욱 튼튼하게 만드는 것에 이바지 한다.
SOLID 원칙 - OCP 열림-닫힘원칙 공부
소프트웨어 요소는 확장에는 열려 있으나, 변경에는 닫혀있어야 한다.
개발 과정에서 만들어진 많은 모듈들 중, 하나를 수정 할 때 그 모듈을 이용하는 다른 모듈을 계속 고쳐야 한다면 프로그램 수정이 어렵기 때문에, 열림-닫힘 원칙은 시스템 구조를 리팩토링 하여 추후 모듈 변경을 하더라도 수정을 크게 유발하지 않도록 하는 것이다.
SOLID 원칙 - LSP 리스코프교환원칙 공부
상위 타입의 객체를 하위 타입의 객체로 치환해도, 상위 타입을 사용하는 프로그램은 정상동작 해야한다.
위 처럼, 하위 타입의 객체로 치환해도 문제가 발생하지 않도록 하기 위해, 하위 타입의 객체 또한 상위 타입의 객체가 따르던 계약 사항을 따라야한다.