1. 객체(Object)

  • 데이터(속성)+기능(메서드)을 가진 실제 대상
  • 쉽게 말해: 실제로 만들어진 것
Dogdog=newDog();

→ dog 가 객체


2. 클래스(Class)

  • 객체를 만들기 위한 설계도
classDog {
Stringname;
voidbark() {}
}

→ Dog 가 설계도


3. 인스턴스(Instance)

  • 클래스로 만들어진 실제 객체
  • 객체와 거의 같은 말
Dogdog=newDog();

→ dog 는 Dog 클래스의 인스턴스

💡 객체 = 실제 존재

💡 인스턴스 = 어떤 클래스로 만들었는지 강조


4. 속성(Attribute)

  • 객체가 가진 데이터(변수)
classDog {
Stringname;
intage;
}

→ name, age 가 속성


5. 메서드(Method)

  • 객체가 수행하는 기능(함수)
classDog {
voidbark() {
System.out.println("멍멍");
    }
}

→ bark() 가 메서드


6. 메시지(Message)

  • 객체의 메서드 호출
dog.bark();

→ 객체에게 “짖어!” 요청 = 메시지


7. 캡슐화(Encapsulation)

  • 데이터 숨기기
  • 외부에서 직접 접근 못하게 함
classDog {
privateintage;

voidsetAge(inta){
age=a;
    }
}

→ private 로 숨김


8. 상속(Inheritance)

  • 부모 기능 물려받기
classAnimal {
voideat(){}
}

classDogextendsAnimal {}

→ Dog가 Animal 기능 사용


9. 다형성(Polymorphism)

  • 같은 명령인데 다르게 동작
dog.sound();// 멍멍
cat.sound();// 야옹

→ sound() 는 같지만 결과 다름


추상화(Abstraction)

  • 공통 핵심 기능만 틀로 정의
  • abstract 메서드는 내용 없이 선언만 함
  • 자식 클래스가 반드시 구현해야 함
abstractclassAnimal {
abstractvoidsound();
}

→ sound()는 “소리를 낸다”는 틀만 있음

→ 실제 내용(멍멍/야옹)은 자식이 구현

암기:

추상화 = 공통 핵심만 정의(틀만 만듦)

abstract 메서드 = 내용 없음, 자식이 완성


11. 오버라이딩(Overriding)

  • 부모 메서드를 자식이 다시 정의
classAnimal {
voidsound(){
System.out.println("소리");
    }
}

classDogextendsAnimal {
voidsound(){
System.out.println("멍멍");
    }
}

→ 부모 기능 덮어쓰기


12. 오버로딩(Overloading)

  • 같은 이름, 매개변수 다름
add(int a,int b)
add(inta,intb,intc)

→ 이름 같음, 인자 다름


인터페이스(interface)

  • 클래스가 반드시 구현해야 할 규칙/틀
  • 메서드 이름만 정해놓고, 실제 내용은 클래스가 작성
  • implements로 사용
interfaceAnimal {
voidsound();
}

classDogimplementsAnimal {
publicvoidsound() {
System.out.println("멍멍");
    }
}

암기:

abstract class = 미완성 설계도

interface = 반드시 지켜야 하는 규칙표