OOP
는 Object Oriented Programming
의 약자로 객체지향 프로그래밍을 뜻합니다.
OOP
는 관련된 데이터끼리 묶어 class를 형성하고 그 안에서 object instance
를 만듬으로써 프로그램을 디자인 해줍니다.
동작 구현
에 중점을 둔다.장점
장점
장점
오버라이딩
이라고 합니다.오버라이딩
상위 클래스가 가지고 있는 멤버변수가 하위 클래스로 상속되는 것처럼 상위 클래스가 가지고 있는 메서드도 하위 클래스로 상속되어 하위 클래스에 사용할 수 있습니다. 또한, 하위 클래스에서 메서드를 재정의해서도 사용할 수 있습니다.
쉽게 말해 1.메서드의 이름이 서로 같고
, 2.매개변수가 같고
, 3.반환형이 같을 경우
에 상속받은 메서드를 덮어쓴다고 생각하시면 됩니다. ' 부모클래스의 메서드는 무시하고, 자식 클래스의 메서드 기능을 사용하겠다'와 같습니다.
class Woman{ //부모클래스
public String name;
public int age;
//info 메서드
public void info(){
System.out.println("여자의 이름은 "+name+", 나이는 "+age+"살입니다.");
}
}
class Job extends Woman{ //Woman클래스(부모클래스)를 상속받음 :
String job;
public void info() {//부모(Woman)클래스에 있는 info()메서드를 재정의
super.info();
System.out.println("여자의 직업은 "+job+"입니다.");
}
}
public class OverTest {
public static void main(String[] args) {
//Job 객체 생성
const job = new Job();
//변수 설정
job.name = "유리";
job.age = 30;
job.job = "프로그래머";
//호출
job.info();
}
}
//여자의 직업은 프로게이머입니다.
Job Class(자식클래스)에서 Woman Class(부모클래스)를 상속받아 부모클래스에 있는 info()를 재정의하여 사용하였고,
메인메서드에서 Job 객체를 생성하고 호출하였기 때문에 Job클래스의 내용이 실행되었습니다.
이처럼 OOP
에서는 이러한 다형성을 허용한다.
오버로딩
이라고 한다.오버로딩
같은 이름의 메서드를 여러개 정의
하고 매개변수의 유형과 개수를 다르게
하여 다양한 유형을 호출할 수 있게 해준다.
class OverloadingTest{
//이름이 cat인 메서드
void cat(){
System.out.println("매개변수 없음");
}
//매개변수 int형이 2개인 cat 메서드
void cat(int a, int b){
System.out.println("매개변수 :"+a+", "+b);
}
//매개변수 String형이 한 개인 cat 메서드
void cat(String c){
System.out.println("매개변수 : "+ c);
}
}
public class OverTest {
public static void main(String[] args) {
//OverloadingTest 객체 생성
OverloadingTest ot = new OverloadingTest();
//매개변수가 없는 cat() 호출
ot.cat();
//매개변수가 int형 두개인 cat() 호출
ot.cat(20, 80);
//매개변수가 String 한개인 cat() 호출
ot.cat("오버로딩 예제입니다.");
}
}
// 매개변수 없음
// 매개변수: 20, 80
// 매개변수: 오버로딩 예제입니다.
이처럼 이름이 cat인 메서드에 총 3개가 있지만 각각 매개변수의 유형과 개수가 다르게 호출되는 것을 오버로딩
이라고 한다.
side effect
가 없는 pure function
을 구현함으로써 프로그램을 디자인한다. 여러개의 작은 function을 엮으며 하나의 큰 function을 구현하고 불변성을 지키게 됨.
side effect
: 부작용
pure function
: 순수 함수
장점
디버깅
이 쉽다. ⇒소스 코드의 오류 또는 버그를 찾아서 수정하는 과정!!!불변성
을 지향하기 떄문에 프로그램의 동작을 예측하기 쉽다. ⇒ 불변 데이터는 한번 생성되고 나면 그뒤에는 변하지 않는다.