[Java] Class정리
Class 정리
객체와 클래스 맛보기
- 클래스란 유사한 특징을 지닌 객체들의 속성을 묶어 놓은 집합체
- 객체는 사용할 수 있는 실체를 의미, 클래스는 객체를 만들기 위한 틀
- 자바에서 클래스를 사용하는 이유는 다양한 자료형, 구조체 그리고 여러 기능적인 요소들을 묶어서 관리할 수 있을 뿐 아니라 데이터를 처리하는 다양한 기능까지 함께 관리하는 문법 요소
- ex) 장호영, 마재화, 박종호등등 많은 아이들이 정글에 있습니다. 이러한 아이들의 특성을 하나로 묶는 명칭 중 학생/ 정글러/ 개발자 라는 단어가 있죠
- 여기서 학생(정글러/개발자)이라는 의미가 클래스이고, 하나 하나의 “학생”이 객체
클래스란?
클래스(Class)는 객체지향 프로그래밍(OOP)에서 기본적인 구성 요소 중 하나로, 객체를 생성하는 데 사용되는 설계 도면이라고 생각할 수 있다. 자바(Java)는 객체지향 프로그래밍 언어로서, 클래스와 객체의 개념을 중심으로 동작
클래스의 구조:
1. 클래스 선언:
1
2
3
public class MyClass {
// 클래스 멤버와 메서드 정의
}
public: 접근 제어자로, 해당 클래스가 다른 클래스에서 접근 가능함을 나타냄class: 클래스를 정의하는 키워드MyClass: 클래스의 이름으로, 일반적으로 대문자로 시작하고 카멜 케이스로 작성
2. 멤버 변수(Fields)와 메서드(Methods):
1
2
3
4
5
6
7
8
9
public class MyClass {
// 멤버 변수 (필드)
int myVariable;
// 메서드
void myMethod() {
// 메서드 본문
}
}
- 멤버 변수: 클래스 내에서 데이터를 저장하기 위한 변수로, 속성이나 상태를 나타냄
- 메서드: 클래스 내에서 어떤 동작을 수행하는 함수로, 특정 기능을 정의
3. 생성자(Constructor):
1
2
3
4
5
6
public class MyClass {
// 생성자
public MyClass() {
// 생성자 본문
}
}
- 생성자는 클래스의 인스턴스(객체)를 생성할 때 호출되는 특별한 메서드
- 생성자는 클래스 이름과 동일하며, 객체 생성 시 초기화 작업을 수행
4. 인스턴스화(Instance):
1
MyClass myObject = new MyClass();
new키워드를 사용하여 클래스를 기반으로 객체를 생성하고, 이를 인스턴스라고 합니다.- 인스턴스 ⇒ 클래스를 기반으로 생성된 객체
myObject는MyClass의 인스턴스를 참조하는 변수입니다.
5. 접근 제어자(Access Modifiers):
public,private,protected등의 키워드를 사용하여 클래스 멤버의 접근 권한을 제어- 예를 들어,
private int myVariable;은 해당 변수가 클래스 내부에서만 접근 가능함을 나타냄
6. 상속(Inheritance):
- 클래스는 다른 클래스를 확장하여 새로운 클래스를 만들 수 있다.
1
2
3
public class ChildClass extends ParentClass {
// 자식 클래스의 멤버와 메서드 정의
}
7. 다형성(Polymorphism):
- 여러 클래스가 같은 메서드 이름을 사용하고 있을 때, 이 메서드를 동일한 방식으로 호출할 수 있다.
- 다형성은 오버로딩(Overloading)과 오버라이딩(Overriding)을 통해 구현
8. 오버로딩(Overloading):
한 클래스 내에서 같은 이름의 메서드를 여러 개 정의하는 것. 메서드의 이름은 동일하지만 매개변수의 개수나 타입이 다를 때 오버로딩이 가능. 컴파일러가 메서드 호출 시 전달되는 인자의 타입과 개수를 통해 적절한 메서드를 호출함.
1
2
3
4
5
6
7
8
9
10
11
public class Example {
// 정수형 덧셈
public int add(int a, int b) {
return a + b;
}
// 실수형 덧셈
public double add(double a, double b) {
return a + b;
}
}
9. 오버라이딩(Overriding):
상위 클래스가 가지고 있는 메서드를 하위 클래스에서 재정의하는 것. 메서드 시그니처(이름, 매개변수, 반환 타입)가 동일해야 함. 상속 관계에서 자주 사용되며, 다형성(Polymorphism)을 구현하는 핵심 메커니즘 중 하나.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Animal {
public void makeSound() {
System.out.println("Some generic sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Bark!");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow!");
}
}
위의 예시에서 Dog와 Cat 클래스가 Animal 클래스의 makeSound 메서드를 오버라이딩함.
10. 오버로딩과 오버라이딩의 차이:
오버로딩(Overloading): 같은 클래스 내에서 동일한 이름의 메서드를 정의하되, 매개변수의 개수나 타입이 달라야 함. 오버라이딩(Overriding): 상속 관계에서 상위 클래스가 가지고 있는 메서드를 하위 클래스에서 재정의하는 것.
클래스는 객체지향 프로그래밍에서 코드의 재사용성, 유지보수성, 코드 구조화 등을 위해 중요한 개념 중 하나로, 클래스를 통해 현실 세계의 객체를 모델링하고 이를 기반으로 프로그램을 작성할 수 있다.
객체와 클래스 그리고 인스턴스 구분
클래스(Class), 객체(Object), 그리고 객체의 인스턴스(Instance)는 객체지향 프로그래밍에서 중요한 개념이지만, 종종 혼동될 수 있는 용어
클래스(Class):
클래스는 객체를 생성하기 위한 설계도 또는 틀 객체가 가져야 할 속성(상태)과 메서드(동작)를 정의 예를 들어, “자동차” 클래스는 자동차의 속성(색상, 속도 등)과 행동(주행, 정지 등)을 정의하는 틀
객체(Object):
객체는 소프트웨어에서 현실 세계의 사물이나 개념을 모델링한 것 클래스의 인스턴스로, 실제로 메모리에 할당되어 사용되는 것 예를 들어, “내 자동차”는 “자동차” 클래스의 인스턴스로, 실제로 존재하는 자동차를 나타냄
인스턴스(Instance):
인스턴스는 클래스를 기반으로 생성된 실체 클래스의 인스턴스로서, 특정 객체를 나타냄 예를 들어, “내 자동차”는 “자동차” 클래스의 인스턴스로서, 실제로 존재하는 특정 자동차를 나타냄 간단히 말하면, 클래스는 객체를 생성하기 위한 설계도이고, 객체는 클래스를 기반으로 실제로 메모리에 할당된 것이며, 그것을 인스턴스라고 부릅니다. 클래스는 여러 개의 객체를 생성할 수 있으며, 각 객체는 독립적인 인스턴스로 존재