Deperecated/JAVA

JAVA 기본서 공부 5 - 클래스

누알라리 2020. 1. 5. 00:34

1. n개의 클래스가 선언된 소스 파일을 컴파일하면 바이트 코드 파일은(.class) 클래스 선언한 개수만큼 생긴다.

 

7. 파일 이름과 동일한 이름의 클래스 선언에만 public 접근 제한자를 붙일 수 있다.

 

8. .연산자의 이름은 객체 접근 연산자.

 

9. this는 객체 자신의 참조자.

 

10. 생성자 오버로딩이 많아질 경우 생성자 간의 중복코드가 많아질 수 있는데, 이를 방지하고자 생성자 안에서 다른 생성자를 호출 할 수 있다.

 

사용방법은 this() 코드 이며, this()는 자신의 다른 생성자를 호출하는 코드로 "반드시 생성자의 첫줄"에서만 허용된다.

 

11. 메소드에서 매개 변수의 수를 모를 경우

- 여러 개의 수를 모두 합산하는 메소드를 선언해야 한다면, 몇 개의 매개 변수가 필요할지 미지수다. 

 

// 1. 매개 변수를 배열 타입으로 선언하는 것.

int sum(int[] array)
{
	int total = 0;
    
	for(int i=0; i<array.length; i++)
    {
    	total += array[i];	
    }
    
    return total;
}

int[] values = { 1,2,3,4,5 };
int result = sum(values);
int result2 = sum(new int[] { 1,3,6,98 });


// 2. 값의 리스트만 넘겨주는 것.
// 메소드 호출 시 넘겨준 값의 수에 따라 자동으로 배열이 생성되고 매개값으로 사용된다.

int sum2(int ...list)
{
	int total = 0;
    
	for(int i=0; i<list.length; i++)
    {
    	total += list[i];	
    }
    
    return total;  
}

int result3 = sum2(1,2,3,4,5);
int result4 = sum2(3,5,61,23);

12. 클래스의 정적 멤버와 static

- 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다.

- 정적 멤버는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 소속되었기 때문에 호출할 때 클래스 이름으로 호출한다.

 

- 클래스에 고정된 멤버이므로 클래스 로더가 클래스(바이트코드)를 로딩해서 method 메모리 영역에 적재할 때 클래스별로 관리된다.

 

- 필드를 선언할 때, 인스턴스 별로 달라야 하나(색깔), 모든 달력이 공통으로 사용하나(원주율값 등)를 기준으로 판단.

- 메소드의 경우, 인스턴스 필드를 이용해서 실행해야 한다, 인스턴스 필드를 사용하지 않는다면 정적 메소드로 사용.

public class jaava{
	static String company = "a";
    static String model = "b";
    
    static String Info;
	
    // 정적 필드를 초기화 하지 않았을 때 제공되는 정적 초기화 블록
    static{
    	Info = company + "-" model;
    }
}

 

13. 싱글톤(Singleton) 클래스

- 싱글톤 클래스로 만들려면 클래스 외부에서 new 연산자로 "생성자를 호출 할 수 없게" 한다.

- 생성자를 호출한 만큼 객체가 생성되기 때문이다.

 

// 1. 생성자 앞에 private 를 선언해 외부에서 접근할 수 없게 한다.
// 2. 자신의 타입인 정적 필드를 하나 선언하고, 자신의 객체를 생성해 초기화 한다,
// 3. 싱글톤을 반환하는 정적 메소드를 선언한다.


public class taeyeon{
	
    //정적 필드
    private static taeyeon oneaneonlysingleton = new taeyeon();
    
    //생성자
   	private taeyeon();
    
    //정적 메소드
    static taeyeon getInstance()
    {
    	return oneaneonlysingleton;
    }
   

}

8. final 필드

- final 필드는 초기값이 저장되면 이것이 최종값이 되어 프로그램 실행 도중에 수정할 수 없다는 것이다.

- 필드 선언과 동시에 초기화하거나 생성자를 통해 초기화해야 한다.

 

9. 상수(static final)

- 객체에 속할 필요가 없는 공용성을 띄고(static)

- 값이 변하지 않아야 하는 수.(final)

- 상수 이름은 모두 대문자로 작성하는 것이 관례.

- 정적 블록이나 선언과 동시에 초기화 시킨다.

 

10. 패키지

- 자바에서는 클래스를 체계적으로 관리하기 위해 패키지를 사용해서 폴더 저장하듯 클래스를 저장 관리 한다.

- 패키지는 클래스를 컴파일하는 과정에서 자동적으로 생성된다.

- 클래스의 전체 이름은 상위패키지.하위패키지.클래스 이다.

 

- 패키지 선언이 포함된 클래스를 컴파일 하려면 명령 프롬프트를 열고 디렉토리를 설정한 후,

javac -d . classname.java // 현재 폴더 내에 생성

javac -d ..\bin classname.java // 현재 폴더와 같은 위치의 bin 폴더에 생성

javac -d C:\Temp\bin classname.java // 이 폴더에 생성

 

- 클래스에 main() 메소드가 있다면 명령 프롬프트에서 사용 가능 하고, 패키지가 시작하는 폴더에서 java 명령어를 사용해서 실행하면 된다.

 

나의 경우

cd C:\Hyunndy_Workspace\bin

C:\Hyunndy_Workspace\bin>java Hyunndy_Toy_Package.Hyunndy

로 하면 Main()이 있는 Hyunndy class를 실행할 수 있다.

 

나중에 수정. 지금은 귀찮;

'Deperecated > JAVA' 카테고리의 다른 글

JAVA - 인터페이스  (0) 2020.01.09
JAVA - 어노테이션  (0) 2020.01.09
JAVA - 열거 타입  (0) 2020.01.04
JAVA - 향상된 for문  (0) 2020.01.04
JAVA관련 토막 지식.  (0) 2019.12.19