반응형
개념정리
OOP의 상속 / Implements와 Extends
1. OOP와 상속
1-1. OOP(Object-Oriented Programming, 객체지향 프로그래밍)란?
객체의 관점에서 프로그래밍을 한다는 것으로 객체들의 유기적인 관계를 통해 프로세스가 진행된다. 대표적으로 자바가 있으며, 자바의 경우 구성 단위가 Class.
OOP의 특징
1. 상속과 인터페이스(계층성)
2. 다형성, 사용편의성(모듈화)
3. 캡슐화, 정보 은닉
4. 자료 추상화(모델링)
5. 동적 바인딩
1-2. 상속이란?
자식 클래스가 부모 클래스를 물려받고 기능을 추가하여 확장하는 개념
서브클래스는 슈퍼클래스의 속성을 물려받아 재사용함으로써 코드 작성에 드는 시간과 비용을 높이이는 효과가 있습니다.
1. extends : 부모에서 선언/정의를 모두 하며 자식은 메소드/변수를 그대로 사용할 수 있음
2. implements(interface 구현) : 부모 객체는 선언만 하며 정의(내용)은 자식에서 오버라이딩 해야 함
3. abstract : extends와 interface 혼합. extends 하되 몇 개는 추상메소드로 구현되있음
2. extends(상속)
상속의 대표적인 형태로, 부모의 메소드를 그대로 사용할 수 있으며 오버라이딩 할 필요없이 부모에 구현되어 있는 것을 직접 사용가능하다.
class Vehicle {
protected int speed = 3;
public int getSpeed(){
return speed;
}
public void setSpeed(int speed){
this.speed = speed;
}
}
class Car extends Vehicle{
public void printspd(){
System.out.println(speed);
}
}
public class ExtendsSample {
public static main (String[] args){
Car A = new Car();
System.out.println(A.getSpeed());
A.printspd();
}
}
Car라는 클래스는 Vehicle을 상속 받았다. 그리고 getSpeed() 메소드로 speed를 print 했다.
그런데 vehicle의 getSpeed 메소드에서 speed를 직접 바로 사용했다. extends를 했으니 메소드 뿐만 아니라 변수까지 사용이 가능하기 때문이다.
접근제어자
public protected default private 어떤 클래스에서라도 접근이 가능 동일 패키지 내의 클래스 또는 해당 클래스를 상속받은 다른 패키지의 클래스에서만 접근이 가능 해당 패키지 내에서만 접근이 가능 해당 클래스에서만 접근 가능
3. implements(상속)
implements의 가장 큰 특징은 부모의 메소드를 반드시 오버라이딩(재정의)해야 하며, interface상속에 사용 된다.
interface TestInterface{
public static int num = 8;
public void fun1();
public void fun2();
}
class InterfaceExam implements TestInterface{
@Override
public void fun1(){
System.out.println(num);
}
@Override
public void fun2() {
}
}
public class InterfaceSample{
public static void main(String args[]){
InterfaceExam exam = new InterfaceExam();
exam.fun1();
}
}
extends가 다중 상속이 안되는 반면 implements는 다중상속이 가능하다
public class Son extends Father, Mother{...} // extends 다중상속 불가
public class Son implements Father, Mother{...} // implements 다중상속 가능
반응형
'개발 하나둘셋 > Java & Spring' 카테고리의 다른 글
SpringBoot기반 Redis Cache (0) | 2022.01.13 |
---|---|
웹소켓(WebSocket)으로 채팅기능 구현하기 (0) | 2022.01.03 |
Spring Boot에서 CORS 방법 (0) | 2021.12.13 |
Spring Security (0) | 2021.12.11 |
Spring Boot JWT 기본개념과 특징 (0) | 2021.12.10 |