본문 바로가기

AdvancedJava

캡슐화,객체관계,상속,다형성,object vs class

Encapsulation 

캡슐화


나와 관련된 것을 밖에서 제어 하지 않는다. 



객체 안에 숨긴다  - 다른애가 못보게 한다. 


이게 무슨말이냐면 내가 어떻게 처리하는지에 관계 없이 동작한다. 



그러니까 외부에서는 내가 어떻게 구현되어있는지 모르고, 함수를 만들던지뭘 할때, 각각의 메소드는 독립적으로 기능해야 한다. 


내부는 보통 class안에서 일어나는 일.


외부는 외보 class를export하면 외부에서 일어난다고 한다. 



object vs class



클래스는 오브젝트를 만들기 위한 설계도



그러한 설계도 또한 object이다. 


class는 메모리에 로딩되고 Object는 메모리에 생성된다. 



Class속의 String 메소드가 있으므로 



new String (); 으로 선언할 때,

Class가 먼저 메모리에 로딩이 된다. 



variable


primitive type : char int float byte
객체의 주소는 handle 이라한다. 

내가 가지고 있는 객체의 위치가 가비지 컬렉션에 의해 변경되므로, handle이 주소를 그때그때 알아서 바꿔준다. 

어쨋든 변수라는 것은 특정한 객체를 가르키는 것이다. 


class A{

B b;


// b라는 변수는 정의 되었지만 객체는 만들어 지지 않은 상태 

b= new B();

// B의 객체가 메모리에만들어져 b가 객체 B를 가르키는 상태


//b는 B type과 object를 쓸수 있다. 


// 이때 변수 b와 객체 B는 IS-A관계이다. 


}



heap vs stack


 - 멤버안에 변수는 초기화 안해도 0으로 설정한다. 


 - 메소드안에 저장한 변수는 stack에 저장한다. 초기화를 자동으로 시켜주지 않기 때문에 반드시 초기화 필요



Field and Method


속성과 behavior(행위) 라고도 한다. 


mothod는 서브루틴.


객체와 객체관의 관계

심플하게는 IS-a , Has-a 두가지 관계로 말할 수 있다. 

IS-a는   a is a b. a=b이다 관계이다. 


a는 b에서의 field와 method가 속한다. 


 - tip! - method가 같다는건 형식이 같다는것, 코드가 같다는 것이 아님


이 is-a has-a 관계에 따라 값을 전달하는 방법들이 달라진다. 



상속 Inheritance

자바 1.8부터는 인터페이스도 구체적 구현을 가질 수 있다. 
다중 상속을 구현하는데 인터페이스를 사용한다. 

다형성 polymophism

B b;
b와 is a 관계에 잇는 것은 b 에 할당하겠다는 얘기.





'AdvancedJava' 카테고리의 다른 글

한번 날라간 인터페이스 포스팅  (0) 2016.07.05
용어정리  (0) 2016.07.05
정보은닉  (0) 2016.07.05
객체와 객체지향이란...  (0) 2016.07.05
쉽게말해 추상화  (0) 2016.07.05