LANGUAGE
-
[JAVA] JVM 메모리 구조LANGUAGE/JAVA 2014. 4. 24. 15:00
JVM에서 실행되는 모든 프로그램들(스레드)들은 메소드 영역과 힙 영역을 공유하게 된다. 메소드 영역은 클래스 내의 메소드에 해당하는 바이트코드와 클래스 변수 등이 저장되는 영역이며, 힙영역은 프로그램의 실행 중에 생성된 객체를 저장하게 된다. 스택영역은 각각의 스레드가 수행되면서 실행하고 있는 메소드의 호출 상태를 저장하며, 여러개의 스레드가 수행되는 경우 다수개의 스택 프레임으로 구성될 수 있다. 메소드 영역 자바 프로그램을 구성하고 있는 메소드와 클래스 변수(static으로 선언된 변수)를 저장하기 위한 공간이다. JVM은 복수개의 스레드가 메소드를 정상적으로 사용하기 위한 동기화 기법을 제공한다 힙 영역 프로그램 상에서 데이터를 저장하기 위해 동적으로(실행시간에) 할당하여 쓸 수 있는 메모리 영역..
-
[JAVA] 오버로딩, 오버라이딩LANGUAGE/JAVA 2014. 4. 14. 17:50
오버로딩(다형성 구현) 하나의 클래스에 같은 이름의 메소드들을 여러 가지 형태로 정의하는 것 메소드 선언부의 반환형과 메소드 이름은 반드시 같아야한다. 매게변수의 개수나 데이터형이 반드시 달라야 한다. 장점 1 : 오버로딩된 메소드는 편리하다. 오버로딩된 메소드들이 있다면 형변환 해서 사용하지 않아도 된다. 장점 2 : 클래스에서 메소드 이름을 절약할 수 있다. 오버로딩이 없다면 같은 기능을 하더라도 메소드 이름을 중복해서 선언할 수 없으므로 메소드 이름이 복잡해질 수 밖에 없다. -------------------------------- 오버라이딩 상속 관계에 있는 자식 클래스에서 상복받은 자원을 재정의하는 것 오버라이딩은 자식 클래스에서만 적용 가능하다. 오버라이딩하고자 하는 메소드의 선언부를 그대로..
-
[JAVA] 상속LANGUAGE/JAVA 2014. 4. 14. 16:30
예시 부모 : Person (속성 - age, name , 메소드 : getInfo()) 자식 : Doctor, Nurse, Patient 장점 1 : 코드를 재활용함으로써 간소화된 클래스 구조 상속을 하지 않을 시 Doctor, Nurse, Patient에 모두 getInfo()와 age, name속성을 코딩해줘야 한다. 장점 2 : 클래스의 기능 테스트에 대한 생산성 및 정확성 증가 상속 기법을 사용하지 않을시 3개의 클래스에서 각각의 getInfo() 메소드를 3번 검사해야 한다. 하지만 상속 기법을 사용하면 Person클래스의 getInfo() 메소드 하나만 테스타하면 된다. 장점 3 : 클래스의 수정/추가에 대한 유연성 및 확장성 증가 getInfo() 메소드의 로직을 변경해야 할 상황이 생겼을..
-
[JAVA] 추상화, 캡슐화, 다형성, 상속1LANGUAGE/JAVA 2014. 4. 10. 17:39
- 추상화 내가 만들고자 하는 객체의 특성이나 기능이 무엇인지 먼저 정리하는 것 - 캡슐화 서로 관련 있는 기능이나 데이터를 한 곳으로 모아서 효율적으로 관리 및 사용할 수 있도록 하는 것 꼭 필요한 데이터나 기능만 외부에 노출시키는 것. 이를 정보 은닉이라고도 한다. - 다형성 다양한 형태를 가지는 성질. 에를 들어 a()라는 메소드는 여러 가지 매개변수를 받을 수 있다. a(int b), a(char c), a(boolean d) 등등 - 부모 자식 관계 (상속) 물려주는 클래스 – 부모 클래스 or 상위 클래스 상속받는 클래스 – 자식 클래스 or 하위 클래스 자식 클래스가 부모 클래스로부터 메소드와 속성을 바로 가져다 슬 수 있다 is-a 관계, has-a 관계 소 is a 동물 -> 소는 동물이..