1. 캡슐화
- 하나의 묶음으로 캡슐화 하는 것
- 객체 내부의 데이터를 외부에서 접근하지 못하도록 제한하여 유지보수성을 높이는 것
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Person 클래스
name과 age 변수가 private으로 선언된 Person 클래스
따라서 외부에서 직접 접근 불가!
2. 추상화
- 공통된 속성들을 추출해 인터페이스로 정의하는 것
public abstract class Animal {
public abstract void move();
}
public class Puppy extends Animal {
@Override
public void move() {
System.out.println("네 발로 걸어요. 멍!");
}
}
public class Bird extends Animal {
@Override
public void move() {
System.out.println("훨훨 날아다녀요!");
}
}
Animal 클래스는 move() 메소드를 추상 메소드로 선언
Puppy, Bird 클래스는 Animal 클래스를 상속받아 move() 메소드를 구현
3. 다형성
- 같은 이름의 메소드나 클래스가 여러개 존재, but ! 서로 다른 기능을 수행하는 것
- 이름 그대로 다양한 형태
- 하나의 인터페이스나 클래스를 여러 방법으로 구현하거나 사용하는 것
public class Animal {
public void makeSound() {
System.out.println("동물이 내는 소리!");
}
}
public class Puppy extends Animal {
@Override
public void makeSound() {
System.out.println("멍!");
}
}
public class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("야옹!");
}
}
public class Main {
public static void main(String[] args) {
Animal animal1 = new Animal();
Animal animal2 = new Puppy();
Animal animal3 = new Cat();
animal1.makeSound(); // "동물이 내는 소리!" 출력
animal2.makeSound(); // "멍!" 출력
animal3.makeSound(); // "야옹!" 출력
}
}
4. 상속
- 부모 자식간의 관계, 물려받기
- 이미 작성된 클래스를 기반으로 새 클래스 작성 가능
- 자식 클래스는 부모 클래스에서 정의된 필드와 메소드를 직접 선언하지 않아도 사용 가능
- extends
public class Animal {
public void move() {
System.out.println("동물이 움직여요!");
}
}
public class Puppy extends Animal {
public void bark() {
System.out.println("멍!");
}
}
public class Cat extends Animal {
public void meow() {
System.out.println("야옹!");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
Puppy puppy = new Puppy();
Cat cat = new Cat();
animal.move();
puppy.move();
puppy.bark();
cat.move();
cat.meow();
}
}
검색하고 정리한 결과? 💙
- 캡슐화(encapsulation): 객체의 필드와 메소드를 외부에서 직접 접근할 수 없도록 보호하는 것으로, 정보은닉(information hiding)의 개념을 포함
- 추상화(abstraction): 객체들이 가지는 공통적인 특징을 추출해서 모델화하는 것으로, 객체 지향 프로그래밍에서 필수적인 개념 중 하나
- 다형성(polymorphism): 같은 타입 또는 같은 메소드를 호출하더라도 다양한 동작을 수행할 수 있는 것으로, 객체 지향 프로그래밍의 중요한 특징 중 하나
- 상속(inheritance): 이미 작성된 클래스를 기반으로 새로운 클래스를 작성할 수 있는 것으로, 코드의 재사용성을 높일 수 있음
'개발공간 > HW' 카테고리의 다른 글
❓Spring에서 DI, IoC란 무엇일까? (0) | 2023.04.04 |
---|---|
🔎 지그재그(ZigZag)가 가진 기능 분석하기 (0) | 2023.04.03 |
❓@Annotation 어노테이션 (0) | 2023.03.29 |
❓@Override 오버라이딩 (0) | 2023.03.29 |
❓인터페이스란? (0) | 2023.03.28 |