[JAVA] 객체 지향의 특징

ggamang·2023년 3월 28일
0

JAVA&Spring

목록 보기
1/27

캡슐화

서로 연관있는 속성과 기능을 하나로 묶어 외부로부터 데이터를 보호하는 것

public class Time {
	private int hour;
    
    public void setHour(int hour) {
    	if ( hour < 0 || hour > 23 ) return;
        this.hour = hour;
    }
}

public class Main {
	Time t = new time();
    t.setHour(25);
}

데이터보호

외부의 직접접근을 막아 클래스에 정의된 속성을 보호

데이터은닉

상세 구현은 숨기고 외부에 필요한 부분만 노출하는 것

추상화

public abstract class Car {

    public abstract void move();
}

public class PoliceCar extends Car{

    @Override
    public void move() {
        System.out.println("사이렌을 울립니다");
    }
}

public class SnowCar extends Car {

    @Override
    public void move() {
        System.out.println("제설을 합니다");
    }
}

추상클래스

미완성 메서드를 갖고 있는 클래스
다른 클래스 작성에 도움을 주기 위함이다

인터페이스

추상메서드의 집합으로, 구현된 것이 없는 '설계도'개념이다

상속

두 클래스를 부모와 자식으로 관계를 맺어주는 것
기존의 클래스로 새로운 클래스를 작성하는 것

class Parent { }
class Child extends Parent { }
class Point {
	int x;
    int y;
}

class Point3D extends Point {
	int z;
}

JAVA는 단일 상속만을 허용한다
자손은 조상의 모든 멤버를 상속받는다(생성자, 초기화 블럭 제외)
조상클래스의 변경 사항은 자손클래스에 영향을 주지만, 자손클래스의 변경사항은 조상클래스에 영향을 주지 않는다

장점

  1. 코드의 재사용성 증가
  2. 코드의 중복 제거, 유지보수 용이

오버라이딩

상속받은 조상의 메서드를 자신에 맞게 덮어쓰는 것

다형성

여러가지 형태를 가질 수 있는 능력
조상 타입 참조 변수로 자손 타입의 객체를 다루는 것

Tv t = new Tv();
SmartTv s = new SmartTv();

Tv t = new SmartTv();

하나의 타입에 여러 객체를 대입할 수 있는 성질

0개의 댓글