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 = 반드시 지켜야 하는 규칙표