class 클래스이름{
멤버변수;
void 메서드이름() {
}
}
객체의 선언
클래스이름 객체이름;
객체의 할당
객체이름 = new 클래스이름();
선언과 할당의 통합
클래스이름 객체이름 = new 클래스이름();
객체 안에 포함된 변수의 값을 다른 변수에 복사하는 경우
변수 = 객체이름.멤버변수;
객체 안에 포함된 변수의 값에 다른 값을 대입하는 경우
객체이름.멤버변수 = 값;
객체 안에 포함된 메서드를 호출하는 경우
객체이름.메서드이름();
객체 안에 포함된 메서드에 파라미터를 전달하는 경우
객체이름.메서드이름(값1, 값2, 값3, ..., 갑n);
Main 01
class Student{ // 클래스 이름의 첫 글자는 대문자로 하는 것이 좋다!
// 이름, 나이
String name = "자바학생";
int age = 19;
}
public class Main01 {
public static void main(String[] args) {
// 객체의 선언과 할당의 분리
Student std; // 클래스이름 객체이름;
std = new Student(); // 객체이름 = new 클래스이름();
// 객체의 생성(일괄지정)
Student std2 = new Student();
// 클래스이름 객체이름 = new 클래스이름();
System.out.println( "std 이름 : " + std.name );
System.out.println( "std 나이 : " + std.age );
System.out.println( "std2 이름 : " + std2.name );
System.out.println( "std2 나이 : " + std2.age );
std2.name = "JSP학생";
std2.age = 18;
System.out.println( "std2 이름 : " + std2.name );
System.out.println( "std2 나이 : " + std2.age );
}
}
✔ result
std 이름 : 자바학생
std 나이 : 19
std2 이름 : 자바학생
std2 나이 : 19
std2 이름 : JSP학생
std2 나이 : 18
std name = "자바학생"
age = 19
Student
std2 name = "자바학생"
age = 19
Main 02
class Character{
// 일반적으로 멤버변수는 선언만 한다.
String name;
int age;
}
public class Main02 {
public static void main(String[] args) {
// 하나의 클래스가 정의되면, 그 클래스의 구조를 기반으로하는
// 객체(=Object)를 여러개 생성할 수 있다.
Character d = new Character();
d.name = "둘리";
d.age = 20;
Character h = new Character();
h.name = "희동";
h.age = 3;
System.out.println("이름 : " + d.name + " , 나이 : " + d.age);
System.out.println("이름 : " + h.name + " , 나이 : " + h.age);
}
}
✔ result
이름 : 둘리 , 나이 : 20
이름 : 희동 , 나이 : 3
메서드란 프로그램에서 하나의 동작 단위를 의미한다.
두 개 이상의 메서드가 서로 동일한 대상을 위해서 존재할 경우, 이 메서드들을 클래스에 포함시켜 그룹화 할 수 있다.
클래스에 멤버변수와 메서드가 공존할 경우, 멤버변수는 모든 메서드가 공유하는 전역 변수로 존재하게 된다.
변수의 종류
-> 멤버변수(전역변수)
: 클래스 안에서 선언된 변수로서, 클래스 블록 범위 안에서 유효하다.
-> 지역변수
: 메서드 안에서 선언된 변수로서, 메서드의 블록을 빠져나가지 못한다. 그러므로 다른 메서드는 해당 변수를 인식하지 못한다. 이 규칙은 조건, 반복문과 같은 블록 {}을 형성하는 모든 경우에 해당한다.
🎇 참고
Main 03
class HelloWorld{
// 멤버변수(전역변수)는 모든 메서드가 공유한다.
String message;
int num; // 전역변수
void sayHello() { System.out.println( message ); }
void setEng() { message = "Hello Java"; }
void setKor() { message = "안녕하세요. 자바"; }
void test(){
int num2; // 지역변수
System.out.println(num2);
}
}
public class Main03 {
public static void main(String[] args) {
HelloWorld hello = new HelloWorld();
// 메서드 호출
hello.sayHello();
hello.setEng();
hello.sayHello();
hello.setKor();
hello.sayHello();
hello.setEng();
hello.setKor();
hello.setEng();
hello.setKor();
hello.sayHello();
}
}
✔ result
null
Hello Java
안녕하세요. 자바
안녕하세요. 자바
-> 계산 기능을 갖는 클래스 예
class Calc {
int sum(int x, int y) {
return x + y;
}
}
-> 기능의 활용 : 두 개의 값을 위하여 객체를 각각 생성하는 경우
Calc c1 = new Calc();
int a = c1.sum(100, 200);
System.out.println(a);
Calc c2 = new Calc();
int b = c2.sum(200, 300);
System.out.println(b);
Calc c1 = new Calc();
int a = c1.sum( 100, 200 );
System.out.println( a );
int b = c1.sum( 200, 300 );
System.out.println( b );