[2022-08-01] TIL - 5일차

2022. 8. 1. 15:56Golfzon tech/TIL

Today I Learned

  •  클래스
  •  객체
  •  static
  •  메서드
  •  오버로딩
  •  오버라이딩
  •  접근제한자

VO 파일 작성

 

- 필드값

- 매개변수가 없는 생성자

- 매개변수가 있는 생성자 (모든 속성을 매개변수로 하는 생성자 , 필요한 것만 써도 되고)

- getter (읽기) / setter (쓰기) 생성

- toString 재정의 (해도 되고 안해도 되고)

- hashCode & equal 재정의 (해도 되고 안해도 되고)

 

main 에서 출력할 때 getter로 출력해도 된다.

 

접근제한자

 

public : 외부 클래스가 자유롭게 사용 가능

private : 외부에서 사용될 수 없다.

protected : 같은 패키지 또는 자식 클래스에서 사용할 수 있다.

default : 같은 패키지만 사용!  아무런 접근 제한자가 선언되지 않았다면 default !

 

ScoreVO vo = new ScoreVO(); // 우측은 콜만할거야! 뜻이고 vo 객체변수 있으면 할당될거야! 라는 말.

 

System.out.println()  : println() 메서드 자체가 toString 을 가지고 있다. 물론 toString() 을 붙여서 써도 된다.

 

오버라이딩은 상속일 때만 가능하다.

 

생성자에서 속성을 초기화한다. initialization fields : 속성 초기화

Score s = new Score();
// 콜한거다. 생성자라서 new 해서 콜한거다. Score 타입으로

 

메서드

 

// 3. method : 함수 , function 
	// static or instance 
	
	public void start()
	{
		// 기능.
	}
	public static void stop()
	{
		// 기능.
	}

 

static vs nonstatic

 

public class Test{
	static int A;
    int B;
    
    // B를 main 에서 출력하기 위해서는 객체를 생성한 후에 사용할 수 있다. main은 static 이기 때문에
    
}

class Test01{
	int num;
	static int num2;
	
}

public static void main(String[] args) {
	// num2를 출력하고 싶다면
    System.out.print(Test01.num2); // 클래스 이름. static 변수를 작성해주어야한다.
    System.out.print({객체를생성한 후 객체변수}.num);
}

 

// static 을 사용할 때도 있고 안할 때도 있다.  왜그럴까?  - static 이 사용할 수 있는 메모리가 정해져 있기 때문에

// static은 가장 먼저 올라가기 때문에 엄청 빠르지 하지만 메모리에 올릴 수 있는 한계가 있다.

// 데이터가 안바뀌는 상황이면 static 이 좋다. 

// 메모리의 오버플로우를 넘어갈 때 까지 써버리면 문제가 생기지

 

 

싱글턴 패턴

// 싱글톤 패턴은 한가지만으로 데이터를 바꾸지 않을거에 쓴다. 클래스가 싱글톤으로 쓰이니까

// static 은 가비지컬렉터에서 지울 수 없다. 메모리가 끝까지 가기 때문에...

 

public class Test02SingleTon {
	
	// 싱글톤 
	static Test02SingleTon singleTon = new Test02SingleTon();
	
	// private 이니까 밖에서는 쓸 수가 없지.
	private Test02SingleTon() {
		// TODO Auto-generated constructor stub
	}
	
	public static Test02SingleTon getInstance() {
		return singleTon;
	}
}

 

싱글턴은 new 를 한번만 써서 getInstance 메서드를 아무리 새로 만들어도 주소값이 값다.

 

		Test02SingleTon singleTon1 = Test02SingleTon.getInstance(); // 싱글턴 호출
		System.out.println(singleTon1);
		
		// 주소가 같다. new 를 한번만 썼으니까. 계속해서 객체 이름 바꿔가면서 써도 주소가 같다.
		Test02SingleTon singleTon2 = Test02SingleTon.getInstance(); // 싱글턴 호출
		System.out.println(singleTon2);
        
        
        같다.
728x90

'Golfzon tech > TIL' 카테고리의 다른 글

[2022-08-03] TIL - 7일차  (0) 2022.08.03
[2022-08-02] TIL - 6일차  (2) 2022.08.03
[2022-07-29] TIL - 4일차  (0) 2022.08.01
[2022-07-28] TIL - 3일차  (0) 2022.07.29
[2022-07-27] TIL - 2일차  (0) 2022.07.28