📎 특정 기능(=연산)을 그룹화 해서 재사용하기 위한 단위
public static void 메서드이름(){ ...수행할 연산식.. }
📎 정의된 메서드는 다른 메서드를 구성하는 {...}안에서 다음의 형식으로 사용될 수 있으며, 이를
메서드를 호출한다
라고 한다메서드이름();
📎 java프로그램의 메서드는 자신이 실행되는데 필요한 조건값을 메서드
이름 뒤의 괄호안에서 변수 형태로 선언한다. 이를메서드 파라미터(매개변수)
라고 표현public static void 메서드이름(변수형 변수이름){ }
📌 메서드가 연산을 수행하는 데에 있어 두 개 이상의 파라미터가 필요하다면 콤마(,)로 구분하여 선언 가능 → 다중 파라미터
public static void 메서드이름(변수형 변수이름,변수형 변수이름, ... ,){ }
📎 메서드 정의하면서 파라미터가 명시되어 있다면 해당 메서드를 호출하면서 파라미터를 전달해 주어야함
public static void 메서드이름(변수형 변수이름, 변수형 변수이름){...}; 메서드이름(값1, 값2);
📎 메서드의 리턴값
📎 메서드가 연산 결과를 자신이 호출된 위치에 반환하는 것을
"리턴"
이라고하며, 반환되는 값을"리턴 값"
이라 함📎 메서드 안에서 값을 리턴하기 위해서는 "return" 이라는 키워드 사용
📎 값을 리턴하는 메서드는 선언시에 "void"키워드 대신, 리턴하는 값에 대한 변수형이 명시된다 ("void"는 리턴값이 없다는 의미)
public static 리턴형 메서드이름(변수형 파라미터1, 변수형 파라미터2,..){ ..... return 리턴값; }
📎 JAVA메서드 역시 서로 호출하는것이 가능
📎 호출된 메서드가 값을 텍스트 리턴하는 경우, 리턴 받은 값을 다른 연산자에 사용할 수 있다.
📎 프로그래밍에서의 객체 : 프로그램에서 표현하고자 하는 기능을 묶기 위한 단위
📎 객체가 중심이 되는 프로그래밍 기법
📌 객체를 이루는 것은 데이터와 기능
📎 데이터는 변수로 표현
📎 객체 안에 포함된 변수를
멤버변수
혹은프로퍼티
라고 한다📎 기능은 메서드(=함수)로 표현
📎 객체를 생성하기 위해서는 객체의 설계도가 필요
📎 객체의 설계도 역할을 하는 프로그램 소스
📎 공장에서 하나의 설계도를 사용하여 여러개의 제품을 생산할 수 있는
것처럼 하나의 클래스를 통해 동일한 구조를 갖는 객체를 여러개 생성할 수 있다.📎 동일한 설계로 만들어진 자동차라 하더라도, 각각의 자동차를 구성하는
부품들은 형태만 같을 뿐 실제로는 각각 존재📎 클래스를 작성하면서 그 안에 생성되는 멤버변수들은 여러 개의 객체 간에 서로 동일한 이름으로 존재하지만 실제로는 서로 다른 값이라는 의미
class 클래스 이름{ 멤버변수; void 메서드이름(){ ... } }
📎 'class'라는 예약어와 클래스의 이름을 명시하고 {...} 블록으로 구성
📎 멤버변수는 여러개 존재할 수 있다. 값을 선언과 동시에 할당할 수 있고, 객체를 통해 간접적으로 할당하는 것도 가능
📎 메서드는 여러개 존재할 수 있다
📎 클래스 안에 포함된 멤버변수와 메서드를 특성에 따라 그룹화 하기
위한 기법이 클래스를 작성하는 것이라고 이해할 수 있다
📌 객체를 선언
클래스이름 객체이름;
📌 객체의 할당
객체이름 = new 클래스이름();
📌 선언과 할당의 통합
클래스이름 객체이름 = new 클래스이름();
📌 객체 안에 포함된 변수나 메서드는 점(.)으로 연결하여 접근
객체이름.멤버변수 = 값;
객체이름.메서드이름();
객체이름.메서드이름(값1, 값2, ..);
📎 객체를 생성함과 동시에 객체 안에 name변수와 age변수가 할당된 값을 포함
📎 같은 클래스로 객체를 여러 개 생성할 경우, 모든 객체가 동일한 값을
갖게 된다📎 멤버변수의 값을 지정하기 전까지 사용될
"기본값"
으로써의 의미📎 일반적으로 클래스 작성 시에는 멤버변수에 값을 지정하지 않는다
📎 메서드란 프로그램에서 하나의 동작 단위를 의미
📎 두 개 이상의 메서드가 서로 동일한 대상을 위해서 존재할 경우 이 메서드들을 클래스에 포함시켜 그룹화 할 수 있다
📎 클래스에 멤버변수와 메서드가 공존할 경우, 멤버변수는 모든 메서드가 공유하는
전역 변수
로 존재하게 된다
📌 멤버변수 (= 전역번수)
📎 클래스 안에서 선언된 변수로써 클래스 블록 범위 안에서 유효
📌 지역변수
📎 메서드 안에서 선언된 변수로써 메서드의 블록을 빠져나가지 못한다. 그러므로 다른 메서드는 해당 변수를 인식하지 못한다 → 이 규칙은 조건, 반복문과 같은 블록 { }를 형성하는 모든 경우에 해당
📎 객체 안에 멤버변수(=데이터)가 포함되지 않는다
📎 객체 안에 포함된 메서드를 호출하여 결과를 만들기 위한 목적이므로 굳이 여러개의 객체를 생성할 필요가 없다
영어 + 숫자 + 언더바(_)의 조합
이고, 첫 글자는 반드시 영어로 표기한다.
첫 글자는 대문자로 시작, 나머지 글자는 소문자로 표시한다.
두 개 이상의 단어를 조합해야 할 경우 새로운 단어는 대문자로 시작한다.
class MyClass class Student class NetworkHelper
- 대부분 소문자로 구성되만, 두개 이상의 단어를 조합할 경우 새로운 단어는
대문자로 표시한다.
모두 대문자로 표시한다.
final double PI; final int COLOR
📎 자기 자신을 의미하는 키워드
📎 클래스 안에서 this를 사용하여 "자기자신"을 표현
class User{ String name; public void setName(){ String name; name = "자바학생"; } }
📎 멤버변수와 지역변수가 동일한 이름으로 공존할 경우 유효성의 범위가 작은 변수가 우선적으로 인식
class User{ String name; public void setName(){ String name; name = "자바학생"; // 현재 클래스의 자신의 변수. // 즉, 멤버변수로 선언된 name을 의미한다. this.name = "자바"; } }
📎 파라미터도 해당 메서드 안에서만 유효한 지역변수의 일종
📎 파라미터를 사용하여 멤버변수의 값을 간접적으로 설정하고자 할 경우 → 변수의 이름을 서로 다르게 사용하는 것 보다는 이름은 동일하게 지정하고, this 키워드를 사용하여 멤버변수와 파라미터를 구별하는 것이 java언어의 일반적인 처리 방식
class User{ String name; public void setName(String name){ this.name = name; } } ------------------- User u = new User(); u.setName("자바학생"); System.out.println(u.name); // 자바학생
📎 모든 멤버변수 앞에는 this 키워드를 사용하여 멤버변수임을 직관적으로 표시하는 것이 소스코드의 가독성을 위하여 바람직
class User{ public String getName(){ String name = "자바학생"; return name; } public void sayName(){ String myname = this.getName(); System.out.println(myname); } }
📎 메서드의 경우 다른 클래스의 메서드를 이름만으로 호출할 수 있는 방법이 없기 때문에, this.getName()이 아닌, getName() 만 사용하더라도 코드 가독성의 문제는 없다
Member member = new Member();
📎 new 키워드를 사용하여 객체가 생성될 때 자동으로 실행되는 특수한 형태의 메서드
📎 리턴형을 명시하지 않으며, 메서드의 이름은 클래스와 동일
class Member{ Member(){ // 이 안은 객체가 생성될 때 자동으로 호출된다. } .... }
📎 자동으로 실행된다는 특성 때문에 객체가 생성되면서 해당 객체의 특성을 초기화 하기 위하여 사용 (ex. 멤버변수의 초기값을 할당하는 용도)
📎 파라미터가 없는 생성자
📎 클래스에 특별히 생성자가 정의되지 않은 경우 java 컴파일러는 다음과 같은 기본 생성자가 존재한다고 인식
class User{ User(){ // 생성자가 있지만, 내용이 비어있다. } }
📎 생성자도 메서드의 한 종류이므로 파라미터를 함께 정의하는 것이 가능
📎 생성자의 파라미터를 멤버변수에 복사하는 것으로 객체의 초기화를 외부적인 요인에 의해 처리할 수 있다
class Student{ String name; int age; Student( String name, int age ){ // 생성자 파라미터의 값을 멤버변수에 복사 this.name = name; this.age = age; } } -------------------------- 📌 생성자에 파라미터가 정의된 경우 객체 생성 구문에서 해당 파라미터를 전달 Student std = new Student("자바학생", 20);