본문 바로가기
Programming/JAVA(eclipse)

java 10일차 _ 9일차 정리

by yoon9i 2024. 3. 21.

1. 개발자가 작성하는 최소 단위

가. 클래스 ( 변수, 메서드 )
- 현실세계의 객체 ( 속성, 동작 )
- 구성요소
1) 변수( 멤버변수, 인스턴스변수 ) : 속성의 값을 저장
2) 메서드( 멤버메서드, 인스턴스메서드 ) : 변수의 값을 수정,조회,체크,...
3) 생성자( 멤버포함x ) : 변수를 초기화
- 사용?
반드시 heap 메모리에 로딩( loading ) 해야되고 로딩하는 방법이
객체생성( new )을(를) 이용한다. ( loader )

클래스 변수명 = new 클래스( ); // 객체 생성
//클래스( ); //-> 생성자호출 코드

변수명.멤버변수;
변수명.멤버메서드( );

나. 같은 종류의 클래스가 여러개가 작성된 상황 ==> 상속( inheritance )
ex)
Cat, Dog, Bird, Bat,... (class)

공통적인 속성: 이름, 성별, ...
공통적인 기능: 먹기, 자기,...

공통적인 속성 & 기능 ===> 새로운 클래스 지정, 하위클래스 모두 포함가능한 타입.(상속)

      Object ( 최상위 클래스, root 클래스 )
          |
        Pet
          | (삼각형 실선), extends Pet
Cat Dog Bird Bat,...   <상속>

- 모든 클래스( 사용자지정클래스, API ) 는 상속관계로 되어있다.
   ==> 계층구조를 갖는다.
- 상속 불가 요소 2가지 ( 부모의 생성자, private 로 된 멤버 )
  * 멤버는 변수랑 메서드를 포함해서 얘기함.
- 오버라이딩 기능 ( 상속전제, 부모의 메서드를 자식이 재정의 )
  => 규칙: 부모의 리턴타입, 변수명, 인자리스트는 반드시 동일.
  접근지정자는 같거나 덜 엄격한 레벨로 지정가능.
  예외클래스는 같거나 자식 클래스 레벨로 지정가능.
  => @Override 어노테이션을 지정해서 정보지정 및 규칙위반시
       컴파일에러를 발생시킴.
- 항상 자신보다 부모를 먼저 생성한다. 
( 자식 생성자 첫라인에서 항상 부모 생성자를 호출하는 코드가
삽입: super( ) ) -> 명시적으로 호출도 가능
- 단일 상속

다. 추상 클래스 ( abstract class )
- 목적: 
부모가 가진 임의의 메서드를 자식들이 사용하도록 강제하고자 할때이다.
- 문법:
public abstract class 클래스 {
    
   변수
   메서드
   생성자

    추상 메서드( abstract method ): { } 지정안함. 불완전 메서드
}

- 특징:    
1. 객체생성불가
2. 추상클래스 자신은 인스턴스가 불가능하지만 다른 클래스를 이용하면 
   추상클래스를 인스턴스화가 가능하다.

추상클래스
      | ( 삼각형 실선, 상속관계 ), extends
다른클래스

3. 추상클래스의 추상메서드를 하위 클래스가 반드시 재정의해야되는 
   강제성이 부여된다.( * )
   따라서 추상클래스를 상속받은 모든 하위클래스들의 메서드를 
   일치시키게 할 수 있다.
4. 다형성 적용 가능
ex)
추상클래스 변수 = new 하위클래스( );          


라. 인터페이스 ( interface )
- 목적: 특정 메서들를 자식들이 사용하도록 강제하고자 할때이다.
- 문법:
public interface 인터페이스 {
    
      상수: public static final 자동지정
      default메서드: public default void a( ) { }
      static메서드: public static void b( ) { }

      추상 메서드( abstract method ): { } 지정안함. 불완전 메서드
}
- 특징:
1. 객체생성불가
2. 인터페이스 자신은 인스턴스가 불가능하지만 다른 클래스를 이용하면
    인터페이스를 인스턴스화가 가능하다.

인터페이스 ( 큰타입)
      |
      | ( 삼각형 점선, 구현관계 ), implements, 다중구현
다른클래스 (작은타입)

---------------------------------------------------------------

인터페이스1  인터페이스2
          |
          | ( 삼각형 점선, 구현관계 ), implements, 다중구현
        다른클래스

----------------------------------------------------------------

인터페이스1  인터페이스2
          |
          | ( 삼각형 실선, 상속관계 ), extends, 다중상속
        인터페이스

3. 추상클래스의 추상메서드를 하위 클래스가 반드시 재정의해야되는 
   강제성이 부여된다.( * )
   따라서 인터페이스를 구현한 모든 하위클래스들의 메서드를 일치시키게
   할수 있다.
4. 다형성 적용가능
ex)
인터페이스 변수 = new 하위클래스( );



클래스
-------
목적: 현실세계의 객체표현
구성요소: 변수, 메서드, 생성자
특징: new 가능( 인스턴스화가능 ), 상속관계( 단일상속 ), 다형성 가능, extends
       하위클래스에서 부모메서드의 대한 강제성이 없음.



추상클래스
------------
목적: 클래스의 특정메서드를 자식이 사용하도록 강제.
구성요소: 변수, 메서드, 생성자, 추상메서드
특징: new 불가, 상속관계( 단일상속 ), 다형성 가능, extends
       하위클래스에서 반드시 추상메서드를 재정의(강제성; @override ),
       부모의 변수 나 메서드를 자식이 사용할수있음.



인터페이스
------------
목적: 특정메서드를 하위에서 사용하도록 강제.
구성요소: 상수, default메서드, static메서드, 추상메서드
특징: new 불가, 구현관계( 다중구현 ), implements, 다형성 가능,
       하위클래스에서 반드시 추상메서드를 재정의( 강제성 ),
       인터페이스간에는 다중상속이 가능.