class 클래스이름{ 멤버변수; void 메서드이름( ) {...} }
객체의 선언
-> 클래스이름 객체이름;
class Calc{ // Calc 클래스 ... } public class Main{ // Main 클래스 public static void main(String[] args){ Calc c1; // <- 객체의 선언 }
객체의 할당
-> 객체이름 = new 클래스이름( );
c2 = new Calc();
선언과 할당의 통합
-> 클래스이름 객체이름 = new 클래스이름( );
Calc c3 = new Calc();
객체 안에 포함된 변수나 메소드는 점(.)으로 연결하여 접근한다.
class Calc{ int max; public static void plus(){ ... } public static void minus(){ ... } public static void multiply(int x, int y){ ... } public static void divide(int x, int y){ ... } } public class Main{ public static void main(String[] args){ Calc c = new Calc(); // 선언과 할당
객체 안에 포함된 메소드를 호출하는 경우
-> 객체이름. 메소드이름( );
c.plus(); c.minus();
객체안에 포함된 변수의 값을 다른 변수에 복사하는 경우
-> 변수 = 객체이름.멤버변수;
int num = c.max;
객체안에 포함된 변수의 값에 다른 값을 대입하는 경우
-> 객체이름.멤버변수 = 값;
c.max = 200;
객체 안에 포함된 메소드에 파라미터를 전달하는 경우
-> 객체이름. 메소드이름(값1, 값2, ...);
c.multiply(10, 20); c.multiply(30, 40); } }
class User{ String name; //전역변수 public void setName( ) { String name; // 지역변수 name = "자용자"; this.name = "김학생"; } }
-> 전역변수와 지역변수가 동일한 이름으로 공존할 경우, 유효성의 범위가 작은 변수가 우선적으로 인식된다.
class User{ String name; //전역변수 public void setName( ) { this.name = name; } }
-> 파라미터도 해당 메소드 안에서만 유효한 지역변수의 일종이다.
-> 모든 멤버변수 앞에는 this 키워드를 사용하여 멤버변수임을 직관적으로 표시하는 것이 소스코드의 가독성을 위해서 바람직하다.
class User{ public String getName( ){ String name = "김학생"; retrun name; } public void sayName( ){ String myname = this.getName( ); System.out.println(myname); } }
-> getName( )을 호출하는 메소드는 this키워드를 사용하여 현재 클래스 안에 포함된 다른 메소드임을 명시하고 있다.
-> 하지만 메소드의 경우 다른 클래스의 메소드를 이름만으로 호출할 수 있는 방법이 없기 때문에, this.getName( )가 아닌, getName( )만 사용하더라도 코드 가독성의 문제는 없기때문에 잘 사용하지 않는다.