오늘도 열심히 아침부터 달리고 집으로와서 9시에 정확하게 늦지않고 들어갔다 ^^ 밥먹는 시간이 빨라진 것인가?
오늘은 객체지향언어 oop를 배웠다.
객체,클래스,상속,다형성,추상화,캡슐화 ... 중에서 객체와 클래스에 대해서 배워보았다.
객체 = 무안가에 대한 정보와 동작을 묶는 것
클래스 = 클래스를 통해 객체를 만들 수 있다.
class person{
String name; --->필드
method(){ -->메서드
}
}
즉 예를 들면 클래스는 = 설계도 , 객체 = 설계도를 통해 얻은 객체
클래스의 생성 과정에 대해서 설명해보자면
Person p = new Person();
가장 먼저 실행정 Person클래스가 JVM에 RUN TIME AREA에 클래스 영역에 클래스를 생성하고 실행 부분에서
new Person();생성자를 통해 heap메모리에 저장하게 된다. 그렇게 지정된 참조변수 p는 스택에 heap메모리에 저장된 person에 주소값을 가진상태로 저장되게 된다.
즉:
java program이 시작하게 되면 jvm에서 class loader가 runtime Data area에 먼저 클래스 영역에 클래스만 할당 하고
실행 후 인스턴스가 생기기 때문에 클래스 변수, 클래스 메서드 즉 static 을 붙이게 되면 생성 전에 사용이 가능하다는 것이다.
class 변수는 class를 통해 접근하는 것이 관례이다.
Peson 클래스이면 Person.id;
id=class변수
메서드 시그니처, 메서드 바디
method ()->선언 부를 메서드 시그니처 라고 하고,
{
------------> 메서드 바디
}
메서드 오버라이딩은 매게변수의 변화에 따라서 일일이 메서드의 이름을 바꿔가면서 여러가지 메서드를 만들면 자원 낭비가 크기 때문에
매게변수의 타입만 바꿔서 새로운 메서드를 형성하지 않고, 같은 이름으로 다양하게 사용할 수 있게해준다.
오늘은 pair프로그래밍이 끝났는데 뭔가 시원 섭섭하기도 하고, 개인적인 시간을 가졌던 것 같다.