JAVA - 객체(2편)

클래스(class)

 

클래스 접근제한자

클래스 작성시 접근제한자는 2가지만 사용할수있다.

//class 접근제한자
public Person{
	//코드내용
}

//default Person{} 인데 default는 접근제한자의 기본설정 값이기때문에 생략가능
Person{
	//코드내용
}

 

클래스 작성 방법

클래스에는 필드(멤버 변수), 생성자(), 메소드 등으로 나뉘어작성하는것이 관례인거같다

public Person{
	// 1. 필드(멤버변수)
    
    
    
    // 2 . 생성자
    // 메소드와 사용은 비슷하다.
    public Person(){
    	
    }
    
    // 3. 메소드
    // 기능을 작성하는 부분 
    // getter/setter 또는 기능을작성한다
    public void method1([ 매개변수 ] ){
    	//코드 정의
    }
    


}

 

위의 설명을 코드로 표시했을시 는 아래와같다.

Person.class

public Person{
	// 1. 필드(멤버 변수)
    private String userId;
    private String userPwd;
    private String userName;
    
    2. 생성자
    public Person(){
    	// 기본생성자
    }
    
    // 3. 메소드
    // getter/setter (캡슐화)
    
    public String getUserId(){
    	return this.userId;
    }
    public void setUserId(String userId){
    	this.userId = userId;
    }
    
    public String getUserPwd(){
    	return this.userPwd;
    }
    public void setUserPwd(String userPwd){
    	this.userPwd = userPwd;
    }
    
    public String getUserName(){
    	return this.userName;
    }
    public void setUserName(String userName){
    	this.userName = userName;
    }
    
    // 멤버변수 값확인하는 호출 메소드
    public String information(){
    	return "userId = " + userId + ", userPwd = " + userPwd + ", userName = " + userName ;
    }
    
}

Run.class

public class Run {
	public static void main(String[] args) {
		Person p = new Person(); //객체(인스턴스) 생성
        System.out.println(p.information()); //참조변수 p 의 필드(멤버변수) 값 확인
        
        p.setUserId("hong");
        p.setUserPwd("1234");
        p.setUserName("홍길동");
        System.out.println(p.information()); //참조변수 p 의 필드(멤버변수) 값 확인
	}
}

결과 출력

결과출력 설명

첫번째 출력

null이 나오는 이유는 만약 값을 초기화하지않은경우 JVM이 자동적으로 초기화해준다

int = 0, double = 0.0, char =' '; String= null;

String형은왜 "" 가아니라 null냐 하면 자료형이 참조타입일경우에는 null로 반환한다.

 

두번째 출력

setter 메소드이용하여 값을 입력하여 출력하였다.

 

 

필드

필드 표현식

[접근제한자] [예약어] class 클래스명 {

      [접근제한자] [예약어] 자료형 변수명 = [초기값];

}

 

필드 접근제한자

필드의 접근제한자는 총 4가지가 존재한다.

 

 

필드 예약어 - static

static이 예약어로 표시되면 객체 생성 하지 않아도 메모리 구조의 static 영역에 메모리가 올라가게된다.

일종의 공유 기능을 역할 하게된다.

 

Card.class

public class Card {
	// 1. 필드
    //width, height 의 멤버변수를 static로 작성하였다.
	public static int width  = 250;
	public static int height = 100;
	public int cardNum;
	
	public String information() {
		return "width=" + width + ", height=" + height + ", cardNum=" + cardNum; 
	}
}

Run.class

public class Run {
	public static void main(String[] args) {
		Card c1 = new Card();
		Card c2 = new Card();
		Card c3 = new Card();
		
		c1.cardNum = 10;
		c2.cardNum = 20;
		c3.cardNum = 30;
		
		System.out.println(c1.information());
		System.out.println(c2.information());
		System.out.println(c3.information());
	}
}

결과 출력은 예상했을것이다 하지만 여기서 c1의 width 값을 변경하고 다시출력을 해보도록하였다.

 

Run.class(필드값 변경후 출력)

public class Run {
	public static void main(String[] args) {
		Card c1 = new Card();
		Card c2 = new Card();
		Card c3 = new Card();
		
		c1.cardNum = 10;
		
		c2.cardNum = 20;
		c3.cardNum = 30;
		
		System.out.println(c1.information());
		System.out.println(c2.information());
		System.out.println(c3.information());
		
		System.out.println("c1 width 값 변경후 출력 ---------------------------");
		c1.width = 100; 
		System.out.println(c1.information());
		System.out.println(c2.information());
		System.out.println(c3.information());
	}
}

 

이런식으로 c1의 필드값만 변경했는데 c2, c3의 width값도 같이 변경되었다 .

static 의 정의를 이해하기어려웠는데 공유라는 개념으로 생각하니깐 쉽게이해되었다..

그리고 static 멤버변수는 객체를 생성안하고 사용도 가능하다

 

public class Run {
	public static void main(String[] args) {
    	// 값 대입 = 클래스명.멤버변수 = 값;
		Card.width = 200;
		Card.height = 300;
		
		System.out.println("Card.width : " + Card.width);
		System.out.println("Card.height : " + Card.height);
	}
}

 

 

필드 예약어 - final

final은 상수 의 예약어이다.

상수는 초기화 이후로 절대 다른값으로 변경을 할수가없다.

 

public class Final {
	// final 명령은 한번 초기화 되면 절대 다른값으로 변경할수가없다
    // 사용시 주의사항 
    // 1. 무조건 대문자로 작성하여야한다.
    // 2. 만약 단어간 구분해야할경우 '_' 으로 구분 작성한다
    //    예 ) admin_name > ADMIN_NAME, userName > USER_NAME
	final int NUM = 1;
	final String ADMIN_NAME = "운영자";
}

 

//final은 대부분 static 예약어와 같이사용한다.
// 주의사항
// static final - 반드시 선언과 동시에 값 초기화를 진행 하여야한다.
                -> 프로그램 시작 시 값이 저장 되면 더 이상 변경되지 않고 공유하면서
//                 사용할 목적으로 사용
static final int NUM = 1;
static final boolean POWER = false;
static final double PI = 3.14;

'프로그래밍 > JAVA' 카테고리의 다른 글

JAVA - 객체(4편)  (0) 2021.05.25
JAVA - 객체(3편)  (0) 2021.05.24
JAVA - 객체(1편)  (0) 2021.05.23
JAVA - 2차원 배열  (0) 2021.05.23
JAVA - 배열  (0) 2021.05.18
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유