접근 제한자(Access Modifier) 경우에 따라 외부에서 객체의 필드를 변경하거나 메소드를 호출하지 못하게 막아야 할 때가 있다. 중요한 필드와 메소드가 외부로 노출되지 않아야 객체의 무결성을 유지한다. 그러기 위해 접근 제한자를 사용한다. 접근 제한자 제한 대상 제한 범위 public 클래스, 필드, 생성자, 메소드 없음 protected 필드, 생성자, 메소드 같은 패키지 또는 자식 객체만 사용 가능 (default) 클래스, 필드, 생성자, 메소드 같은 패키지 private 필드, 생성자, 메소드 객체 내부 접근 제한 강화 순서 public > protected > default > private 1. 클래스 접근 제한 클래스는 public, default 접근 제한을 가진다. [public..
IT/Java
값 변경을 금지하고 읽기만 허용할 때 주로 final 필드와 상수를 선언하여 사용한다. 1. final 필드 선언 final 필드는 초기값이 저장되면 최종적인 값이 되어 프로그램 실행 중에 수정할 수 없다. final 타입 필드 [=초기값]; 초기값은 필드 선언 시와 생성자에서 대입할 수 있다. 고정된 값이라면 필드 선언 시에 주고 복잡한 초기화 코드가 필요하거나 객체 생성 시 외부에서 전달된 값으로 초기화하면 생성자에서 준다. 두 방법을 사용하지 않으면 컴파일 에러가 발생한다. 예제 코드 더보기 public class Korean { // 인스턴스 final 필드 선언 final String nation = "korea"; // 고정값으로 초기 대입 final String ssn; // korean 생..
1. 인스턴스(Instance) member 객체에 소속되어 있으며, New를 통해 객체 생성 후 사용할 수 있는 필드와 메소드이다. 객체 내부의 인스턴스 멤버에 접근하려면 this를 통해 가능하다. public class Car { // 인스턴스 필드 선언 int gas; //인스턴스 메소드 선언 void setSpeed(int speed) {...} } gas 필드는 객체에 소속된 멤버지만 setSpeed() 메소드는 객체에 포함되지 않는다. 메소드를 객체마다 저장 시 중복 저장으로 메모리 효율이 떨어지기에 메소드 코드는 메소드 영역에 있지만 공유하여 사용하고 객체 없이는 사용 불가하게 제한이 걸려있다. 1-1. this 키워드 객체 내부에서 인스턴스 멤버에 접근하기 위해 this를 사용한다. 생성자..
메소드 선언은 객체의 동작을 실행 블록으로 정의하는 것이며, 메소드 호출은 실행 블록을 실제로 실행하는 것이다. 메소드는 객체 내부에서도 호출되지만 다른 객체에서도 호출될 수 있다. 1. 메소드 선언 1-1. 리턴 타입 리턴 타입은 메소드가 실행한 후 호출한 곳으로 전달하는 결과값의 타입이다. 리턴값이 없는 메소드는 void로 작성한다. void powerOn() {...} // 리턴값 없음 double divide(int x, int y) {...} // double 타입 값을 리턴 리턴 타입이 있는 메소드는 실행블록 안에서 return 문으로 리턴값을 반드시 지정한다. 1-2. 메소드명 첫 문자를 소문자로 시작하고, camel 스타일로 작성한다. void run() {...} void setSpeed..
new 연산자는 객체 생성 후 연이어 생성자(Constructor)를 호출해서 객체를 초기화하는 역할을 한다. 객체 초기화란 필드 초기화를 하거나 메소드를 호출해서 객체를 사용할 준비를 하는 것이다. 문법 클래스 변수 = new 클래스( ); 생성자 호출 생성자 실행이 끝나면 new 연산자는 객체의 주소를 리턴하고, 리턴된 주소는 클래스 변수에 대입되어 객체의 필드나 메소드 접근에 이용된다. 1. 기본 생성자(Default Constructor) 모든 클래스는 생성자가 존재하며, 하나 이상을 가질 수 있다. 클래스에 생성자 선언이 없으면 컴파일러는 기본 생성자를 바이트코드 파일에 자동으로 추가시킨다. 문법 [public] 클래스() { } 클래스가 public이면 기본 생성자도 public이지만, 클래스..
필드(Field) 필드는 객체의 고유 데이터, 부품 데이터, 현재 상태 데이터를 저장한다. 필드 선언 필드 선언 방법은 변수와 동일하지만 반드시 클래스 블록에서 선언되어야만 필드 선언이 된다. 타입 필드 [ = 초기값]; 타입은 필드에 저장할 데이터의 종류를 결정한다. 필드명 첫 문자는 소문자로 한다. camel 스타일로 작성한다. 초기값을 제공하지 않을 경우 자동으로 기본값으로 초기화된다. 필드 선언은 중괄호 블록 어디서든 가능하다. 생성자와 메소드 중괄호 블록 내부에는 선언 불가능하다. 필드 선언 예제 코드 더보기 //--Car.java package cs06.sec06.exam01; public class Car { // 필드 선언 String model; boolean start; int spee..
클래스로부터 객체를 생성하려면 객체 생성 연산자 new를 사용한다. new 연산자는 객체를 생성시킨 후 객체의 주소를 리턴하여 클래스 변수에 대입할 수 있다. 문법 클래스 변수 = new 클래스(); 라이브러리(library) 클래스 실행할 수 없으며 다른 클래스에서 이용하는 클래스 실행 클래스 main() 메소드를 가지고 있는 실행 가능한 클래스 자바 프로그램은 하나의 실행 클래스와 여러개의 라이브러리 클래스들로 구성되며, 실행 클래스는 실행하면서 라이브러리 클래스를 내부에서 이용한다. 객체 생성 예제 코드 StudentExample 클래스의 main() 메소드에서 Student 객체를 생성 더보기 Student.java public class Student { } StudentExample.java ..
클래스 선언 객체 생성을 위한 설계도를 작성하는 작업이다. 클래스 작성 규칙 하나 이상의 문자로 이루어진다. 첫 문자는 숫자가 될 수 없다. $, _ 외에 다른 특수문자는 사용 불가능하다. 자바 명령어, 키워드는 사용 불가능하다. 이름은 대소문자를 구분하며 첫번째 문자는 대문자로 작성한다. 문법 //클래스 선언 public class 클래스명 { } public class는 공개 클래스를 선언한다는 뜻이다. 공개 클래스(public class) 어느 위치에 있든지 패키지와 상관 없이 사용할 수 있는 클래스 예제 코드 // 소스 파일 package cs06.sec03; // 패키지 선언 public class SportsCar { // 공개 클래스 선언 } class Tire { } 하나의 소스 파일은 다..
1. 클래스(class) 자바에서 클래스란 객체를 정의하고 틀 또는 설계도와 같은 의미이다. 자바에서는 설계도인 클래스를 갖고, 여러 객체를 생성하여 사용한다. 클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method)로 구성된다. field란 클래스에 포한된 변수(variable)를 의미한다. 메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이다. 2. 인스턴스(Instance) 자바에서 클래스를 사용하기 위해 해당 클래스 타입의 객체를 선언해야 하는데, 클래스로부터 객체를 선언하는 과정을 클래스의 인스턴스 화 라고 한다. 이렇게 선언된 해당 클래스 타입의 객체가 인스턴스(Instance)이며, 인스턴스란 메모리에 할당된 객체를 의미한다. 하나..
객체 지향 프로그래밍(Object Oriented Programming) 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 객체(Object) 객체란 물리적으로 존재하거나 개념적인 것 중에서 다른 것과 식별 가능한 것을 말한다. 객체는 속성과 동작으로 구성되며 각각 필드(field)와 메소드(method)라 한다. 객체 모델링(Object Modeling) 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 말하며, 현실 세계 객체의 대표 속성과 동작을 추려내어 소프트웨어 객체..