객체지향언어 = 프로그래밍 언어 + 객체지향개념(규칙)
package 패키지명;
import 패키지명;
public static class extends implements {
접근제한자 지정예약어 클래스명 상위클래스 상위인터페이스
상속(extends 상위클래스) > 다형성 > 추상화 > 인터페이스
멤버필드
멤버메소드
생성자
중첩클래스
}
클래스
: 같은 종류의 집단에 속하는 속성과 행위를 정의한 것이다. 간단히 말하면, 객체를 정의해 놓은 것, 객체를 만들기 위한 설계도
객체
: 클래스의 인스턴스이며, 이때 인스턴스란 실제로 메모리상에 할당된 것을 의미한다. 객체는 자신의 고유의 속성을 가지며 클래스에서 정의한 행위를 수행할 수 있다. 용도는 기능과 속성에 따라 다르다.
객체의 구성요소
객체 = 속성(변수) + 기능(메서드)
🔽 인스턴스는 특정 클래스로부터 생성된 객체(예시: TV객체)
Class TV {
String color; //색상
boolean power; //전원 상태
int channel; //채널
void power() { power = !power; }
void channelUp() { channel++; }
void channelDown() { channel--; }
}
// 객체의 생성
클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조변수를 선언
변수명 = new 클래스명(); // 클래스의 객체 생성 후 객체의 주소를 참조변수에 저장
TV t; // TV클래스 타입의 참조변수 t를 선언
t = new TV(); // TV인스턴스 생성 후 주소를 t에 저장
// 객체의 사용
t.channel = 7;
t.channelDown();
System.out.println("현재 채널은"+t.channel+"입니다.");
// 참조변수 배열 예시
Tv[] tvArr = new Tv[3]; == Tv tv1, tv2, tv3;
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();
① 변수 : 하나의 데이터를 저장할 수 있는 공간
② 배열 : 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간
③ 구조체 : 서로 관련된 여러 데이터를 하나로 저장할 수 있는 공간
④ 클래스 : 데이터와 함수의 결합(구조체+함수)
🔽 관련된 값 묶을 수 있고, 코드가 덜 복잡하며, 유지보수에 용이함
// 비객체지향적인 코드
int hour = 12;
int minute = 34;
int second = 56;
// 객체지향적인 코드
Class Time {
int hour, minute, second;
}
Time t = new Time();
t.hour = 12;
t.minute 34;
t.second = 56;
Class Variables {
int iv; // 인스턴스 변수 (인스턴스가 생성 되었을 때 생성)
static int cv // 클래스 변수 (클래스가 메모리에 올라갈 때 생성)
void method() {
int lv = 0; // 지역 변수 (변수 선언문이 수행 되었을 때 생성)
}
}
@ javajungsuk_basic>flash>MemberVar.exe 영상 참고 https://github.com/castello/javajungsuk_basic/tree/master/flash
- 문장들을 묶어 놓은 것
- 값을 받아서 처리하고, 결과를 반환
- 하나의 메소드는 한가지 기능만 수행
// Method 예시
int add(int x, int y) { // 선언부
// 구현부
int result = x + y;
return result;
}
// 메소드 이름(parameter 값1, 값2, ...); <= 메소드 호출 방법
print99danAll(); // void print99danAll() 호출
int result = add(3,5); // add메소드를 호출하고 결과를 result에 저장
void printGugudan(int dan) {
if(!(2<=dan && dan<=9) return;
for(int i=1; i<=9; i++) {
System.out.printf("%d * %d = %d\n", dan, i, dan*i);
}
return; // 반환타입이 void이므로 생략가능(컴파일러가 자동 추가)
}
참고