객체 지향 프로그래밍 ( Object Oriented Programming )
클래스 & 객체
객체
- 필요한 데이터를 구체적으로 추상화시켜 속성(property)와 기능(function)를 가진 대상
- 객체의 속성과 기능은 클래스에서 정의됨
추상화
: 객체의 속성 중 중요한 것들만 추려내는 것
인스턴스
: 실제로 생성된 각각의 객체
클래스
- 객체를 정의하는 설계도
- 객체를 생성할 때 사용
- 필드와 메소드로 구성
class InstanceTest
{
int instance;
IntanceTest(){}
public int methodTest(){}
}
public class Main
{
public void main(String[] args)
{
InstanceTest in = new InstanceTest();
}
}
필드 & 메소드
static
- 인스턴스 생성 없이
클래스명.멤버명
으로 호출 가능
- 클래스 내부에 저장공간을 가짐 --> 모든 인스턴스에서 동일한 값을 가짐
필드
- 클래스의 속성(property) 정의
- 클래스에 포함된 메소드를 제외한 클래스 변수 , 인스턴스 변수
클래스 변수
: static 변수 , 모든 인스턴스들이 공유하는 특정한 값
인스턴스 변수
: static 없이 선언된 변수 , 선언된 인스턴스마다 다른 값을 가짐
- cf)
지역 변수
: 메소드 내부에 선언된 변수 , 메소드가 종료되면 없어짐
class Static
{
int st1 = 10;
static int st2 = 10;
public void Method()
{
int st3;
}
}
public class StaticTest
{
public static void main(String[] args)
{
Static stInstance1 = new Static();
Static stInstance2 = new Static();
stInstance1.st1 = -10;
stInstance2.st1 = 100;
System.out.println(stInstance1.st1);
System.out.println(stInstance2.st1);
stInstance1.st2 = -10;
stInstance2.st2 = 100;
System.out.println(stInstance1.st2);
System.out.println(stInstance2.st2);
System.out.println(Static.st2);
}
}
메소드
MODIFIER RETURNTYPE METHODNAME(PARAMETER)
{
METHOD BODY
}
제어자(modifier)
: 클래스, 메소드, 변수의 부가적인 의미 부여
- 접근 제어자 : public , protected , (default) , private
- 그 외 : static , final , abstract ...
반환타입(return type)
: 해당 메소드가 동작을 완료하고 반환하는 값의 타입
- int , double , char , String , void...
변수명(method name)
: 호출하기 위한 변수의 이름
매개변수(parameter)
: 인수로 전달받은 값을 메소드 내부에서 사용 가능하게 하는 변수