정의소프트웨어 엔티티는 확장에 열려있어야하고변경에 대해서는 닫혀 있어야 한다.새로운 기능을 추가하거나 코드를 수정하는 경우기존 코드에 최소한의 변경을 주는 것을 목표로 해야한다.예시마티즈, 쏘나타라는 두 종류의 자동차 존재마티즈수동 기어수동 창문쏘나타자동 기어자동 창문OOP 세계에서는 자동차 종류마다 기능을 변경하지 않고도 활용가능// 마티즈를 운전할 때 driver.operateGearManual(); driver.openWindowManual(); // 쏘나타를 운전할 때 driver.operateGearAuto(); driver.openWindowAuto();가 아니라// 어떤 차를 운전하든 간에 driver.operateGear(); driver.openWindow();가 되어야 확장에 유리함.원..
정의this 는 자바와 같은 객체지향 프로그래밍 언어에서 사용되는 키워드임객체가 자기 자신을 참조하는 경우 사용일상생활에서 나 라고 말하는 것과 유사함.코드예제package This; class 펭귄 { int var = 10; void test() { int var = 20; System.out.println(var); System.out.println(this.var); } } public class Driver { public static void main(String[] args) { 펭귄 뽀로로 = new 펭귄(); 뽀로로.test(); } }System.out.println(var); 의 경우 var는 지역변수 var 의 값이 출력됨System.out.println(this.var);의 경우 ..
정의super 는 자바 같은 단일 상속을 지원하는 객체지향 언어에서 사용되는 키워드임.해당 키워드는 바로 상위 클래스의 인스턴스를 지칭함.this 가 객체 자신을 지칭한다면, super 는 부모 클래스 를 지칭한다.코드 예제package Super; class 동물 { void method() { System.out.println("동물"); } } class 조류 extends 동물 { void method() { super.method(); System.out.println("조류"); } } class 펭귄 extends 조류 { void method() { super.method(); System.out.println("펭귄"); // Syntax error on token "super", Ide..
Package 키워드 프로그래밍에서 네임스페이스(이름공간) 을 생성해주는 역할 코드 내에서 변수, 함수, 클래스 등의 식별자가 겹치지 않도록 구분해주는 공간의 역할을 함 네임스페이스의 필요성 회사에서 여러 개발팀이 있는 경우 하나의 큰 프로젝트를 수행하는경우.. 고객 사업부 마케팅 사업부에서 각각 Customer 클래스를 만들게된다면, 두 클래스 사이에 이름충돌이 발생한다. package 키워드를 사용해 해당 문제를 해결가능 이름 충돌 해결법 package 키워드로 네임스페이스를 나누면 충돌 해결가능 고객사업부.Customer 마케팅사업부.Customer 메타포 스마트폰 이라는 단어만으론 구체적 소유자 구분 불가능 홍길동의 스마트폰 일지매의 스마트폰 처럼 소유자를 명시한다면, 두 스마트폰을 쉽게 구분할 ..
개요interface 와 implements 키워드는 추상화와 다형성을 지원하는 대표적 문법임인터페이스 구성요소인터페이스는 public 추상 메서드 와 public 정적 상수만을 가진다.interface Speakable { double PI = 3.14159; final double absoluteZeroPoint = -275.15; void sayYes(); }Speakable 인터페이스에서는PI , absoluteZeroPoint 가 각각 상수로 인식된다.또한 sayYes() 는 abstract == 추상메서드로 인식된다.자바에서는 인터페이스 내부의 상수나 메서드에 static 이나 abstract 같은 키워드를 명시적으로 쓰지 않아도 된다.이는 설계시에 사용자들을 배려한 처사이다.인터페이스 구현c..
Instanceof자바에서 특정 객체가 어떤 클래스 또는 인터페이스의 인스턴스인지 확인하는 연산자다형성을 관리할 때 용이하다.동작 원리System.out.println(동물객체 instanceof 동물); // 결과는 trueinstanceof 연산자는 동물객체 가 동물 클래스의 인스턴스인지 판별한다.객체지향 설계 5대 원칙과의 관계객체지향 설계 5원칙 중 하나의 LSP ( 리스코프 치환 원칙 ) 을 어길 수 있다.LSP슈퍼 클래스와 서브 클래스 사이에 성립해야하는 원칙서브 클래스는 언제나 슈퍼 클래스로 대체할 수 있어야 한다.하지만, instanceof 로 분기를 처리해버리는 경우 해당 원칙을 어기는 경우가 생길 수 있다.예제출력 결과는 모두 true 이다.이 예제도 모두 true 를 출력한다.주의in..