[Day5] 캡슐화

자바의 특징 3가지

1. 캡슐화(클래스): user_DataType을 선언하는 자료형
 클래스의 멤버 (필드, 멤버 변수, 생성자, 멤버 메소드)

 객체=인스턴스=오브젝트(클래스로 생성된 각각의 것들)
 
 static 멤버 : 선언과 동시에 static 영역에 bind가 되면서 클래스.멤버로 바로 실행된다. (binding)
 
 non-static 멤버 : 생성된 주소가 없기 때문에 new 연산자를 이용해서 객체가 생성될 때 호출할 주소가 대입되어
     대입된 주소를 통해 호출되어 진다.
     
     클래스명   클래스변수 = new 클래스명();
     Score  s1=new Score();
     Score  s2=new Score(); 
     Score  s3=new Score(); 
     
     클래스변수.멤버로 호출한다. 클래스변수=인스턴스
     
     
 <생성자란?>
 
  가. 클래스 이름과 동일하되 반환형은 없고 자바에서는 public을 원칙으로 사용한다.
  
  나. 생성자는 overload 할 수 있다.
  
  다. 생성자는 this()라는 내부 키워드를 사용하여 생성자끼리 호출이 가능하다.
  
  라. 생성자는 객체를 통해 명시호출 할 수 없고 객체를 생성할 때 자동으로 한 번만 호출된다.
  
   My  m=new My();
    m.My(100); ----> (X)
   My  m=new My(100); ----> (X)
  
  마. 생성자를 명시하지 않으면 default 생성자가 호출되고 하나라도 명시하면 생성된 객체의 매개인자에 따라
   맵핑된 생성자가 호출된다. (-> 생성하면 default는 생성되지 않는다는 것임)
   
   new My(); -> public My() {}
   new My(10); -> public My(int a) {}
   new My(10, 10); -> public My(int a, int b) {}
   
  바. 생성자는 상속되지 않는다. 상속시 선조의 생성자는 super()라는 키워드를 사용한다.
  
  사. 생성자의 목적은 멤버변수의 초기화에 있다.
  

2. 상속: 클래스의 기능을 선조와 후손의 개념을 이용해서 기본 클래스에서 확장해서 사용

3. 다형성(추상화): 상속시 선조에 따른 후손 클래스를 다양한 형태를 가진 결과를 유도하는 것

===========================================================================================

[클래스Class] : 사용자 자료형을 말한다.

 - 구성: 멤버필드(public static final ...PI),
      생성자, 멤버변수, 멤버 메소드를 가진다.
  
   [형식]
    접근지정자(public, private 등) class UserName {
      구성 ...
    }
    
   ex) int a, double d;  => 자주 쓰는 두 개를 Test라는 하나의 이름으로 묶을 수 없을까? -> 클래스의 키워드
  
     <선언>
  
     public class Test {
    
      int a;
      double d;
    
     }
    
    
     <사용은 선언된 클래스 자료형을 생성(new)해서 사용하도록 한다>
    
     heap: 자유영역(동적할당) 공간, 그림판 백그라운드
         new를 만나면 동적 할당 공간에 메모리를 실행하고 실행이 끝나면 GC(가비지컬렉터)가 메모리를 자동 소거시킨다.
    
     stack&static: 정적공간 -> class(자바에서 씀), struct, union 선언하면 주소(&)를 관리하는 곳
           static(자바에서 씀)
           호출하면 Bind를 Binding 한다.
    
     static, heap, stack;
    
     1. Test t1=new Test(); // Test라는 자료형의 변수만큼 메모리를 확보한다.
     2. 확보된 메모리의 주소를 이용해서 멤버에 값을 전달한다.
      t1.a=100;
      t1.d=90.9;
      
      
  - 값 전달은 은닉된 멤버변수(private)에게 오픈된 메서드(public)가 값을
     전달 및 변경(void setXX)하고 리턴받는 구조(data type getXX)를 가진다.
    setter & getter 라고 부른다.


===========================================================================================

 


 

 

'BigData > JAVA' 카테고리의 다른 글

[Day7] 2차원 배열  (0) 2015.03.05
[Day6] 배열  (0) 2015.03.05
[Day5] 반복문  (0) 2015.03.05
[Day4] 조건문  (0) 2015.03.05
[Day3] JVM (Java Virtual Machine)의 메모리  (0) 2015.03.05
  Comments,     Trackbacks