클래스(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 |