7. 용어 정리
   (1) 클래스 (class)
       -> 객체를 만들어 내는 틀
         ex) 붕어빵틀
   (2) 객체 (Object)
       -> 클래스를 통해 만들어 낸 구현물
      ex) 붕어빵
   (3) 메소드(Method)
       -> 객체(class도 포함)가 할 수 있는 일
      ex) 먹힌다.
   (4) 생성자(Constructor)
       -> 객체가 만들어 질 때 호출되는 메소드
      ex) 붕어빵의 반죽을 틀에 붓는 기능
   (5) 속성 (Field)
       -> 객체의 특성(속성)
      ex) 앙꼬, 색

 메소드와 생성자의 차이점

8. OOP의 특징
   (1) 상속성(Inheritance)
         -> 자식객체가 부모객체의 모든 것을 상속받는 것
                                                  ( 사용할 수 있는 것 )
    <1> 모든 클래스는 java.lang.Object클래스의 자식이다.          
    <2> 객체가 타입캐스팅이 되려면 반드시 상속관계여야 한다.ㅣ
         - 묵(암)시적 형변환 (Implicit Type Casting)
       --> 자동형변환(하위 --> 상위)
      - 명시적 형변환 (Explicit Type Casting)
       --> 강제형변환(상위 --> 하위)
    <3> 메소드 오버라이딩도 반드시 상속관계여야 한다.
          --> 접근제한자는 부모 메소드의 접근제한자 보다
           크거나 같아야 한다.
  
   (2) 다형성(Polymorphism)
        --> 메소드의 기능이 다양해지는 것
  ex) PolyTest.java

   (3) 은닉성(Information Hiding)
        --> 외부 프로그램(class)에게 정보(속성값)를 감춘는 것
  ex) 계좌.java 



   (4) 캡슐화(Encapsulation)
        ex) 메소드의 기능을 모듈화시키는ㄱ 것
  ex) 적분.java


9. 자바의 변수
   (1) 유효범위를 기준으로
       <1> 멤버변수
          - 클래스내에서만 유효
    - 소속 기준 (클래스변수/객체변수)
    - 초기화를 하지 않아도 됨 (by JVM)

    <2> 지역변수
          - 해당 메소드내에서만 유효
    - 종류
       - 메소드내에서 선언 및 초기화
    - 파라미터 변수
       - 반드시 초기화가 선행되어야지 사용이 가능
      ex) Chogy.java

  (2) 변수타입(type)을 기준으로
       <1> 기본형 (8개)
          - call by value;
    - 형태 : 소문자
    - 종류
        byte(1)  -> short(2) ->  int(4) ->  long(8) -> float(4) -> double(8)
                         char(2)

      boolean
              - 자동형변환방향 (작은 범위 type --> 큰범위 type)
     - 형변환의 필요성 (연산)
     - 초기값
        정수(0), 실수(0.0), 불린(false)
     - 존재이유 : 실행의 효율성 때문이다.
     - 예외 연산 형변환
        정수형(byte, short, char, int) 산술연산에서는
      그 연산결과가 무조건 int 로 나온다.


   cf) float f = 123456789.123456789f;
           double dou = 123456789.123456789;


    <2> 참조형
          - call by reference
    - 형태 : 대문자
    - 종류 : 8가지 기본형을 제외한 나머지 모두
    - 초기값 : null
    - 자동형변환 (자식(남자) --> 부모(사람))

           Object
          |
                    Human
           |
         Man

    - 일반적인 형태의 자동형변환
                  Human h = new Man();
                  Man m = (Man)h;
        
 
  (3) static 이 붙는 여부에 따라
       <1> 클래스 소유 변수
    <2> 객체 소유 변수
 
  (4) final 이 붙는 여부에 따라
       <1> 상수
    <2> 변수
      ex) FinalVTest.java

10. 제한자 (Modifier)
   - 제한자란 ?  클래스, 인터페이스, 변수, 상수, 메소드, 생성자
         앞에 붙어서 기능을 제한하는 keyword

  (1) 접근 제한자
       - public : 접근 제한이 없음
    - protected : 상속, 동일 패키지(디렉토리-폴더)
    - default : 동일 패키지
    - private : 클래내에서만 가능
       public > protected > default > private

  (2) 소유 제한자
      - static :  붙으면 클래스에 소유되고,
                 붙지 않으면 객체에 소유된다.

   - 특징
      - static 메소드내에서는 다른 static메소드만 호출 가능
   - 클래스 이름으로 접근
   - 생성자에는 static 이 붙지 않는다.

  (3)  수정 제한자
      - final : 붙으면 수정을 못하게 한다.
       - class 앞에 붙으면 상속을 못하게 하고
        method 앞에 붙으면 오버라이딩을 못하게 하고
        변수앞에 붙으면 변수값을 변하게 할 수 없다.
     즉, 상수가 된다.
    - 지역변수 앞에는 붙을 수 있다.
    - 생성자 앞에서 final 붙을 수 없다.
    - 부모클래스의 상수와 동일한 일반변수를 자식클래스
       에서 선언하면 그 것을 부모상수에 영향을 받지 않는다.
   
   ex) FinalTest.java


   
   (4)  추상 제한자
   - abstract : 붙으면 추상화가 된다.
     - class 앞에 붙으면 추상 클래스가 되고 method 앞에 붙으면 추상 메소드가 된다.
  - 하나 이상의 추상메소드를 가지고 있으면 그 클래스는 자동으로 추상 클래스가 된다.
  - 변수앞에나 생성자 앞에는 붙을 수 없다.
  - 추상클래스의 객체는 반드시 하위클래스를 만들어서 하위객체를 생성하여
    형변환해서 사용해야 한다.
  - 하위클래스는 상위클래스의 추상메소드를 반드시 모두 구현(재정의)해야한다.
   ex) AbstractTest.java
  
   (5)  기타 제한자
       synchronized(쓰레드), transient(보안상),
    native (System 자원 사용), volatile

Posted by Duritz

공지사항

Yesterday
Today
Total
12-04 15:18

달력

 « |  » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31