2022/04/19 Java& Spring 공부일기

2571 단어 JavaSpringJava

오늘은 지친 몸을 이끌고 퇴근을 했다..
너무 힘들었지만 그래도 기능 몇개 개발초석을 다지고.. 집에까지 터덜터덜걸어갔다..
지방에서 서울로 상경한지 거의 1년이 다되어간다 나는 반지하에 살고 있지만! 다시 고시원으로 갈거다! 왜냐.. 거기는 전기세와 가스비가 무료니까! (핵심) 그리고 생각해보니까 내가 집에서 하는거라곤 잠자기+공부하기+유튜브보기 밖에없었다! 그래서 아마도 신촌에있는 고시원이나 회사근처 충정로에서 고시원을 구하지 싶다! 요즘 고시원이 왜그리 비싼지..
외창방이 필수이다! 내창방은 환기도 잘안되고 여름에 곰팡이 생기기 쉬움!!
아무튼 각설하고 지친 몸을 이끌고 다시 열심히 달려 나갈것이다! 나는 아직 26살 어리니까!

캡슐화(encapsulation)

  • 꼭 필요한 정보와 기능만 외부에 오픈한다.
  • 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만은 제공하여 일관된 기능을 구현하게 함
  • 각각의 메서드나 멤버변수를 접근함으로써 발생하는 오류를 최소화함

즉, 캡슐화는 객체를 좀더 감싸서 꼭필요한 외부에서 사용할 메소드 만 오픈하고 나머지는 자동으로 생산될수있도록 사용할 수 있다.

객체 자신을 가리키는 this

생성자나 메서드에서 this를 사용하는데 이것이 뭐인지 알아보자

this가 하는일

  • 인스턴스 자신의 메모리를 가리킴
  • 인스턴스 자체 내부에서 자신의 주소를 갖는거 -> this임
  • 생성자에서 또 다른 생성자를 호출할때 사용하고
  • 자신의 주소(참조값)을 반환한다.

생성된 인스턴스 메모리의 주소를 가진다.

public void setYear(int year)
{
    this.year = year;
}

이렇게 new BirthDay()를하면 heap메모리상에서 인스턴스가 생성이되고
day라는 변수는 생성된 BirthDay를 가리키는 참조변수이다.
Stack메모리상에 지역변수 메모리공간이 잡히는데 day는 heap메모리의 주소를 가리킨다.
setYear안에 this라는 키워드가 갖게되는 값은 똑같이 heap메모리의 주소를 가리킨다.

생성자에서 다른 생성자를 호출하는 this

클래스에 생성자가 여러 개인 경우 this를 이용하여 생성자에서 다른 생성자를 호출할 수 있다.
주의해야할점은 똑같은 타입의 매개변수를 가진 생성자를 찾아서 호출하는 데 그전에 변수를 선언할 수 없다.

ex)
.... 위에는 멤버변수 
public Person() {
		//int abc; 이렇게 쓸수없다는뜻임
        this("이름없음", 1);
        int abc; 		//- 아래에는 쓸수있다.
       
	}
.... 아래에는 또다른 Person생성자

자기자신을 반환하는 this

public class Person {

	String name;
	int age;
	
	public Person() {
		this("이름없음", 1);
	}
	
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
	
	public Person getPerson() {
		return this;
	}
	
	
	public static void main(String[] args)
	{
		Person p = new Person();
		p.name = "James";
		p.age = 37;
		
		Person p2 = p.getPerson();
		System.out.println(p);
		System.out.println(p2);
	}
}

객체간의 협력(collaboration)

객체 지향 프로그래밍에서의 협력

  • 객체 지향 프로그램에서 객체 간에는 협력이 이뤄짐
  • 협력을 위해서는 필요한 메세지를 전송하고 이를 처리하는 기능이 구현되어야함
  • 매개변수로 객체가 전달되는 경우가 발생할수 있다.
  • 객체협력의 예

여기까지.. 피곤해서 다른공부를 더 하고 자야겟다...ㅎ

좋은 웹페이지 즐겨찾기