면접 준비
-> 코딩인터뷰 정복하기 1강
객체지향프로그래밍 (OOP) 개념
(1) class란 object의 템플릿이다.
data 필드와 method 필드를 가지고 있다.
예를 들어 car 클래스 안에, model과 year라는 멤버 (데이터 필드)가 있고, get모델, set모델과 같은 functoin들, method들이 있다.
(2) object란 클래스의 인스턴스이다.
예를 들어 new 키워드를 써서 car class의 object(이름은 camry라고 하자) camry를 만들 수 있다.
Car camry = new Car();
이렇게 선언함으로써, 이 object는 메모리에 올라가게 되고, camry는 object가 된다.
클래스에서 정의한 method들은 .을 통해 각 오브젝트에서 불러올 수 있다.
camry.setModel("camry")
즉 직접 프로그램에 들어가는 건 object. class는 그저 template
(3) Encapsultation
캡슐화. 클래스의 보안을 제공해주고, 다른 개발자들이 클래스 안의 멤버와 메소드를 바꿀 수 없게 한다. 클래스에 대한 접근 권한이 없으면, 클래스 안의 method와 멤버에 대해서는 변경 할 수 없다.
(4) Inheritance
public class Tesla extends Car{
void ~~
void ~~
}
이런 식으로 활용한다.
tesla는 car라는 클래스를 부모로 갖겠다. 상속을 받으면 tesla에서 정의되어 있지 않은 메소드, 멤버들도 활용이 가능하다.
(5) Polymorphism
Methods having same name works differently in different context(overloading, overriding) java에서 polymorphims은 overloading과 overriding으로 표현된다. 같은 이름인데 ,다르게 행동하는 것
ex) overloading
public class Tesla extends Car {
void printDescription(){
System.out.println("this is a electric car");
}
void printDescription(String param){
System.out.println("this is a electric car, year : " + supter.getYear() + ", model : " + super.getModel()+ ".")
}
}
같은 함수 이름인데 서로 다르게 행동하는 것을 확인할 수 있다. 이게 바로 overloading이다.
overriding이란 같은 이름의 함수인데 서로 다른 클래스에서 다르게 활동하는 것이다. -> Car 클래스에도 printDescription()이 있는데, Tesla라는 printDescription()이 있다. 즉 부모자식간에 같은 이름인데 서로 다르게 행동하는 것. 이게 오버라이딩이다.
(6) Abstraction
가상 클래스라고도 한다. 가상 클래스를 부모로 갖고 있는 자식 클래스는 가상 함수를 그 안에서 구현해야 한다.
예를 들어
public abstract class Abstract_Car{
public abstract void start();
public abstract void stop();
}
이런 식으로 가상 클래스를 구현해놨다.
이제 Abstract_Car를 부모로 갖는 GasCar를 정의 한다고 하면 위에서 선언한 start와 stop에 대해서 꼭 구현을 해줘야 한다.
public class GasCar extends Abstract_Car {
@Override
public void start() {
System.out.println("start Gas Engine");
}
@override
public void stop(){
System.out.println("stop Gas Engine");
}
}
아키텍쳐라고 한다면, 이렇게 가상 클래스를 구현함으로써, 개발자들이 직접 구현을 할 수 있게 해주는 거다.
일할 때 보면 알 수 있다.
체크리스트
Q) class가 무엇이냐? -> class란 object의 템플릿이다.
Q) object란? -> 클래스의 인스턴스이다.
Q) Encapsulation이란 ? -> 캡슐화. 클래스의 보안 제공.
Q) Inheritance ? -> 상속, 부모의 메소드와 멤버 사용 가능
Q) Polymorphism ? -> 다형성, overloading과 overriding으로 표현 overloading : 하나의 클래스 안에서 같은 이름의 함수인데 서로 다르게 행동이 가능한 것. overriding : 서로 다른 클래스에서 같은 이름의 함수 사용 가능한 것.
Q) Abstraction ? -> 가상클래스를 부모로 갖고 있는 자식 클래스는 가상 함수를 그 안에서 무조건 구현해야 한다.
참고자료
코딩 인터뷰 정복하기 (1강) https://www.youtube.com/watch?v=P3bB2li8IXE&list=PLVNY1HnUlO25sSWDr7CzVvkOF3bUgkiQQ