주다람
개미는 뚠뚠🎵 오늘도 뚠뚠🎵 열심히 개발하네✨
주다람
전체 방문자
오늘
어제
  • 분류 전체보기
    • 💭 기록해보자
      • BackEnd
      • FrontEnd
      • 회고
    • 💻 수업정리 (2020)
      • 오라클
      • 자바
      • CSS & HTML
      • JavaScript
      • Servlet
      • JSP
    • 📚 알고리즘
      • DP(다이나믹 프로그래밍)
      • 탐색(BFS,DFS)
      • 다익스트라
      • 순열과 조합
      • 백트래킹
      • 이분탐색(binarySearch)
      • 탐욕(Greedy)
      • 스택,큐,덱(Stack,Queue,Deque)
      • 유니온파인드(Union-Find)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 변환함수
  • 그룹함수
  • 오라클
  • group by
  • oracle
  • 날짜함수
  • 박스모델
  • 문자함수
  • 숫자함수
  • 일반함수
  • background-gradient
  • 함수

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
주다람

개미는 뚠뚠🎵 오늘도 뚠뚠🎵 열심히 개발하네✨

[5/22] 오버라이드와 객체 형변환
💻 수업정리 (2020)/자바

[5/22] 오버라이드와 객체 형변환

2020. 5. 22. 11:35

1. 메소드 오버라이드 : 상속관계에서만 가능함

  • 정의 : 부모클래스의 메소드를 자식 클래스에서 재선언하는것
  • 사용방법 : 부모클래스의 메소드와 같은 형태의 머릿부를 동일하게 선언
  • 기능 : 부모클래스의 메소드는 숨겨지고, 자식클래스의 메소드만 사용가능해짐

오버라이드를 사용하는 방법

참고 ) @Overide 처럼 @붙여서 사용하는 것을 annotation(어노테이션)이라고한다.


2. 상속관계에서 참조변수와 인스턴스의 사용법

1. 부모 클래스 참조변수 = new 부모 클래스();
참조변수는 부모클래스 요소에 접근가능
2. 자식 클래스 참조변수  = new 자식클래스();
참조변수는 자식클래스의 요소 / 부모클래스 요소에 접근가능(상속받았으니까)
3. 자식 클래스 참조변수 = new 부모클래스(); -> 불가능(아예 안되는 경우임)
자식인스턴스가 존재하지 않음(존재하지 않는 자식인스턴스의 정보를 저장하라고 했기때문) 하고싶다면 4번경우에서 형변환을 사용하면 된다.
4.부모클래스 참조변수 = new 자식클래스();
이렇게하면 참조변수의 자료형이 부모클래스가 되어버리므로, 자식클래스에 있는 메소드는 사용할 수 없게됨.
사용하고 싶다면 => 형변환을 하면된다.

형변환 
1. 자동 형변환 : 묵시적 객체 형변환이라고도 한다.
2. 강제 형변환 : 명시적 객체 형변환이라고도 한다.★★★★★많이사용합니다.


3. 오버라이딩

  • 형변환을 하지 않아도 자식클래스의 메소드를 호출할 수 있는 방법이다.
  • 부모가 자식것을 가져다 사용을 할 수 있게된다.(부모는 자신의 메소드를 숨기고 자식것을 쓸 수 있기 때문)
  • 부모를 상속받는 자식은 여러명일 수 있다. 따라서 오버라이딩을 사용하게 되면 참조변수 하나가지고 자식클래스 모두에것을 가져다 사용할 수 있게된다.
  • 만약(빨간선의 경우처럼)자식으로 인스턴스를 만들면 다른 자식클래스에 접근을 할 수 없으므로(비효율을 발생시킴) 4번 경우를 사용하는 것이다.

부모class 참조변수 = new 자식class(); 를 사용하는 이유
자식class가 여러개인 상속  usecase다이어그램

3-1. instaceof연산자

  • 정의 : 상속관계를 구분하기 위한 연산자(반드시 자식클래스를 명확히 구분시켜 주어야 하므로)
  • 사용방법 : 참조변수 instanceof 클래스(자식클래스)
  • 기능 : 참조변수가 자식클래스로 형변환 가능한 경우(=상속관계에 있는 경우)true를 반환
  • 명시적 객체 형변환을 하기 전에 사용하는 연산자이다.

3-2. 오버라이드에 의한 다형성

  • 자식클래스에서 오버라이드를 했기 떄문에 묵시적인 객체 형변환이 일어남
  • 자동으로 부모 인스턴스의 관련된 자식 인스턴스로 변환되어, 자식 메소드가 호출되어진다.

AcademyApp.java

 

더보기
AcademyPerson.java = 부모클래스
AcademyInstructor.java
AcademyStaff.java
AcademyStudent.java

4. Objetc 클래스 

  • 모든 클래스가 반드시 상속 받는 최선조클래스
  • 클래스를 선언할 때 상속받는 클래스가 없을 경우 자동으로 Object 클래스 상속
  • 참조변수의 인스턴스 정보를 출력하면 Object 클래스의 toString() 메소드 자동 호출한다(Object클래스의 toString()메소드를 오버라이드 선언하여 사용한다.
// 필드값을 반환해서 필드값 확인하는 메소드로 활용한다
	@Override
	public String toString() {
		return "소유주  = " + userName + ", 모델 명 = " + modelName;
	}
	

   


5. final 키워드

4-1. final 필드

  • 사용방법 : public static final 필드명 = 값; => "public + static + fianal 은 상수필드" 라고 부른다.
  • 참고) final은 값이 바뀌지 않기 때문에 public과 static과 함께써도 문제가 없기 때문이다.
  • 필드값을 변경할 수 없도록 만든다
  • 무조건 값을 넣어 저장시킨다(생성자에 들어갈 수 없음)
  • 값대신 사용하기 위한 고유명침
  • final필드명은 모두 대문자로 작성하며 _를 사용하여 만든다

4-2. final 메소드

  • 접근지정자 final 반환형 메소드명(파라메터,...)
  • 기능 : 메소드 오버라이드 선언 불가능하게 한다.

4-3. final 클래스

  • 사용 방법 : 접근지정자 final class 클래스명 { }
  • 기능 : 상속을 불가능하게 하기 위해 사용함(오버라이드 하지 못하게 함). 즉, 부모클래스로 사용하지 못하게 한다.

 


5. 추상클래스->내일~~~

'💻 수업정리 (2020) > 자바' 카테고리의 다른 글

[5/28] java.lang패키지  (0) 2020.05.28
[5/27] ★★★ 예외전달, 다중스레드  (0) 2020.05.27
[5/26] 접근지정자 , 자료형(클래스, 인터페이스, enum)  (0) 2020.05.26
[5/25] abstract 클래스/메소드, 패키지와 인터페이스  (0) 2020.05.25
[5/21] 클래스와 상속, 인터페이스  (0) 2020.05.21
    '💻 수업정리 (2020)/자바' 카테고리의 다른 글
    • [5/27] ★★★ 예외전달, 다중스레드
    • [5/26] 접근지정자 , 자료형(클래스, 인터페이스, enum)
    • [5/25] abstract 클래스/메소드, 패키지와 인터페이스
    • [5/21] 클래스와 상속, 인터페이스
    주다람
    주다람
    신입 어린이 -> 주니어개발자 성장중

    티스토리툴바