Java 오버라이드(Override), 오버로드(Overload), 어노테이션주석

NasK!m_311·2022년 8월 22일
0

Java

목록 보기
24/39
post-thumbnail

💡 오버라이드(Override)

1. 다형성을 구련하기 위한 'Override'. (예를들어서 설명.)

	- 육군(Army), 해군(Navy), 공군(AirForce)Unit이라는 클래스를 통하여 공통 속성을 정의하고 있다.
    	(공통속성 : 이름(멤버변수 및 getter, setter), 공격(attack()메소드).
    
    
    - 같은 이름이지만 다른 동작을 수행해야 하난 필요성.
    
    	-> 모든 군대는 '공격'이라는 공통된 특성을 갖지만, 
        	공격하는 방법은 육//공군이 서로 다르게 처리되어야 한다.
            
-------------------------------------------------------------------------------
2. 부모클래스가 갖고 있는 기능을 자식클래스가 재정의.

	- 부모클래스에 정의된 것과 동일한 이름을 갖는 메소드를 자식클래스가 정의한 경우,
    	부모클래스의 기능은 자식에게 '가려진다'.
      
    - 이렇게 부모의 기능을 재정의 하는 것을 메소드 'Override' 라 한다.  
    
    - 하나의 이름으로 다양한 효과 얻기.
    
    	-> 모든 자식클래스가 동일한 이름의 메소드를 갖게 되므로,
        	각 객체에 대하여 attack()이라는 이름을 사용하여 서로 다른 형태를 구현할 수 있게 된다.

-------------------------------------------------------------------------------
3. 어노테이션 주석을 명시해준다.

	- '@Override' 가 어노테이션 주석이다.
    - 매소드 오버라이드를 한다면 어노테이션 주석을 이용해 철자틀림을 방지할 수 있다.

💡 오버로드(Overload)

1. 메소드 오버로드(Overload).

	- 원칙적으로 하나의 클래스 안에는 동일한 이름의 메소드가 두 개 이상 존재할 수 없지만,
    	이를 가능하게 하는 예외적인 처리 기법.
        
-------------------------------------------------------------------------------
2. 이름이 동일한 메소드를 정의하기 위한 조건.        

	1) 메소드간의 파라미터가 서로 달라야한다.
    	-> 파라미터의 데이터 타입이 다르다.
        	(데이터 형이 동일하고 변수의 이름이 다른 경우는 동일한 파라미터로 인식된다.)
        -> 파라미터의 개수가 다르다.
        -> 서로 다른 데이터 형을 갖는 파라미터들의 전달 순서가 다르다.
        
    2) 리턴형이 다른 경우는 오버로드의 성립에 아무런 영향을 주지 않는다.
    
-------------------------------------------------------------------------------
3. 오버로드 예시.

	1) 파라미터의 데이터형이 서로 다르기 떄문에 오버로드 '성립'.
    
    		public void user(int a){..}
            public void user(long a){..}
            
    2) 파라미터의 개수가 서로 다르기 때문에 오버로드 '성립'.
    
    		public void user(int a){..}
            public void user(int a, int b){..}
    
    3) 데이터 형의 전달 순서가 서로 다르기 때문에 오버로드 '성립'.
    
    		public void user(int a, String b){..}
            public void user(String b, int a){..}
    
    4) 지역변수가 다르더라도 데이터 형이 같으므로 오버로드 '성립불가'.
    
    		public void user(int a, String b){..}
            puvlic void user(int b, String a){..}
            
-------------------------------------------------------------------------------
4. 생성자의 오버로드(Overload).

	- 객체 생성 방법의 다양화.
    - 생성자 역시 메소드의 한 종류이므로 Overload가 가능하다.
    - 생성자를 Overload할 경우, 
   	 해당 클래스에 대해 '객체를 생성하는 방법'을 다양하게 준비할 수 있게 된다.
     
-------------------------------------------------------------------------------
5. this 키워드를 사용한 생성자 오버로드(Overload).

	- this 키워드의 용법.
    	-> 메소드처럼 사용할 경우, 현재 클래스의 다른 생성자를 의미한다.
            
    - this 키워드를 사용하여 생성자 Overload를 간결하게 처리하기.        
    	-> 파라미터가 서로 다른 생성자들이 하나의 완전한 생성자를 호출하도록 하여,
        	데이터의 초기화를 한 곳에서 일괄적으로 처리하도록 구현할 수 있다.
           
-------------------------------------------------------------------------------
6. 초기화 생성자(파라미터를 갖는 생성자)와 기본 생성자를 모두 사용하고 싶다면, 
	오버로드(Overload)를 활용하면 된다.

※ 5. this 키워드를 사용한 생성자 오버로드(Overload) 예시 사진.

profile
메리아빠, 먹다가 죽어도 되는 개발자.(살뺴자....)

0개의 댓글