Java Day 10 생성자,this,static,final
14 Dec 2020 | JavaJava Day 10 생성자,this,static,final
Java Day 9에 이어서
-
생성자
-
new 연산자로 객체가 생성될 때 호출되어 초기화를 담당
-
반환형(return value)이 없다
-
생성자를 안만들면 default 생성자 자동 생성
-
하나의 클래스에는 인자의 수가 다르거나 자료형이 다른 생성자가 여러개 있을 수 있다. (생성자 오버로딩)
-
-
this
- 한 클래스 내에서 전역변수와 지역변수가 겹치는 영역에서 지역변수가 우선이다
public class Ex{ int var; public void setVar(int var){ var = var; //전역변수와 지역변수가 겹침 } public int getVar(){ return var; } public static void main(String[] ar){ Ex me = new Ex(); me.setVar(1000); System.out.println("var = : "+me.getVar()); } // output : var = 0;
전역변수가 우선이게 하려면? this를 붙인다.
- 위의 코드에서 this.var = var;로 바꾸면 원하는대로 1000이 출력된다
- this는 객체 자신의 참조
- this()는 현재 객체의 생성자를 의미 (반드시 첫줄에 적여야한다)
- 다른 생성자에서 this()로 기존의 코드를 호출하고 새로 실행문 추가 => 생성자 오버로딩
-
static
-
static(고정된)이 붙은 필드와 메소드는 정적 필드(클래스 변수), 정적 메소드라고도 한다
-
static 특징
-
메모리를 공유한다
-> static변수가 바뀌면 모든 객체의 변수값이 변경된다
-
static은 가장 먼저 메모리에 잡힌다
-> 객체를 생성하지 않고 클래스명으로 접근 가능
-
static은 한 번만 초기화 된다
-> static은 별도의 초기화 구문을 가진다
-
static메소드 안에서 static 변수만 사용이 가능하다
static 변수는 static메소드 안에서만 사용이 가능하다
예외) 클래스의 멤버 메소드일 경우 static변수 사용 가능
-
public class StaticEx{ private int x; public static int y; static { //static 초기화 구문 y = 20; } public int getX(){ return x; } public static void main(String[] ar){ System.out.println("y = "+StaticEx.y); //클래스명으로 접근 가능, 20출력 StaticEx.y = 100; // 값 변경 StaticEx se = new StaticEx(); System.out.println("x = "+se.getX()); //x,getX()메소드는 정적멤버가 아니므로 객체를 만들어서 사용해야함 System.out.println(se.y); // 100 출력, 변경된 값으로 출력된다 } }
-
-
final
-
더 이상 변경이 불가한 상수의 의미를 가짐
-
static final로 주로 상수 지정함
-
상수는 대문자로 표기
-
참고 자료
KG아이티뱅크 자바 강의자료