● 객체지향 프로그래밍의 특징
● 클래스, 객체, 인스턴스의 의미
● 클래스를 생성하고 사용하는 방법
● 인스턴스 변수와 인스턴스 메소드에 대해 학습
1. 객체지향 프로그래밍
=> 모든 데이터를 object로 취급하여 프로그래밍 하는 방법
ㅁ 객체지향 프로그래밍의 특징
- 자료 추상화
- 상속
- 캡슐화
- 다형
2. 클래스, 객체, 인스턴스
⊙ 객체 (≒ 인스턴스)
: 서로 다른 많은 데이터를 하나로 묶어서 표현한 것
⊙ 클래스
: 객체를 만드는 도구,
객체를 정의해 놓은 것
ㅁ 클래스를 사용하는 이유
-> 코드의 재사용성 , 코드의 중복을 제거하여 오동작 방지
ㅁ 클래스의 정의와 객체 생성
- 클래스 정의 : 클래스를 작성하는 것
- class 키워드로 클래스를 정의
- 객체 생성 : 클래스명 객체 = new 클래스명()
- 객체 호출 : 객체명.변수명 / 객체명.메소드명()
class Car { # 클래스 정의
boolean powerOn;
String colorString;
int wheel;
int speed;
boolean wiperOn; # 클래스 안에서 변수를 생성
}
public class Test {
public static void main(String[] args) {
Car my_car1 = new Car(); # Car 클래스의 객체생성
Car my_car2 = new Car();
System.out.println(my_car1.color); # my_car1 객체의 변수 출력
my_car1.color = "red"; # my_car1 객체의 변수에 값을 저장
my_car2.color = "blue";
System.out.println(my_car2.color);
}
}
3. 메소드
● 메소드란?
- 특정 객체/데이터 자료형이 가지고 있는 함수(function)
- 데이터와 멤버 변수에 대한 접근 권한을 가짐
● 메소드 호출 방식
- 특정 객체를 통해서만 호출 가능
- 객체 + '.'(마침표)를 통해 호출 가능
ex)
ArrayList <Integer> my_list = new ArrayList<>();
my_list.add(3);
my_list.clear();
ㅁ 함수와 메소드의 차이점?
함수 : 독립적으로 호출 가능
메소드 : 특정 객체가 필요함
● 사용자 메소드 (사용자 함수)
: 사용자가 직접 만든 함수
내장함수 외의 기능 혹은 자신이 원하는 기능을 작성
ㅁ 사용자 메소드의 정의
- return문은 반환값이 없을 경우에는 작성 X
- 메소드의 반환 타입이 void일 경우를 제외하고는 반드시 메소드 내부에 return문이 있어야 함
- 메소드 이름은 사용자가 지정
반환타입 메소드명 (자료형타입 매개변수, 자료형타입 매개변수, ...) {
본문
return 반환값;
}
ㅁ 메소드 호출
- 정의된 메소드를 사용하는 것 (정의 후 사용)
참조변수.메소드명(인수);
4. 클래스의 구성
: 클래스는 객체가 가져야 할 값과 기능을 가져야함
객체 [ 변수(인스턴스 변수): 명사적 성격
/ 함수(인스턴스 함수): 동사적 성격
]
● 인스턴스 변수와 인스턴스 메소드
ㅁ 인스턴스 변수
(1) 클래스 기반으로 만들어지는 모든 인스턴스들이 각각 따로 저장하는 변수
(2) 객체마다 가지는 고유한 변수
(3) 인스턴스 생성할 때 만들어짐
(4) 인스턴스마다 다른 값을 가져야 할 경우 인스턴스 변수로 선언
ㅁ 인스턴스 메소드
(1) 객체를 생성해야 호출이 가능한 메소드
(2) 객체가 생성되어야 메모리에 올라감
(3) 메소드 앞에 static이 붙어있지 않음
● 클래스 변수와 클래스 메소드 // 정적 변수와 정적 메소드
ㅁ 클래스 변수
(1) 모든 인스턴스가 동일한 값을 사용할 때 ㅈㅇ의함
(2) 모든 인스턴스들이 공유하도록 처리
(3) 클래스가 처음 메모리에 로딩될 때 생성
(4) 변수 선언 시 static 키워드 사용
ㅁ 클래스 메소드
(1) 객체를 생성하지 않아도 호출이 가능
(2) 메소드 선언 시 static 키워드를 사
'WEB' 카테고리의 다른 글
[JAVA] 클래스와 객체 02 (0) | 2024.03.21 |
---|---|
XML 기본 문법 (0) | 2024.03.18 |