다형성(polymorphism)
=여러가지 타입(데이터 타입)의 특성
=>특정한 변수가 여러가지 데이터 타입을 저장하고 사용
부모 클래스 타입의 참조 변수로 자식 클래스의 인스턴스 참조가 가능하다.
-상대적으로 더 작은 데이터 타입의 데이터가 상대적으로 더 큰 데이터 타입의 변수에
들어가는 것은 문제가X (암시적 형변환)
-부모 클래스는 항상 자식 클래스보다 큰 데이터 타입이다.
ex)
Child myChild = new Child();
Parent myParent = my Child(); => Parents > Child
Parent my Parent = new Parent();
= new Child();
Object obj = new Parent();
= new Child();
= new Grandchild();
★거꾸로는 안된다★
참조 변수에서의 형변환
-서로 상속 관계에 있는 클래스 사이에만 타입 변환이 가능하다.
-자식 클래스 타입에서 부모 클래스 타입으로의 타입 변환은 생략이 가능하지만,
-부모 클래스 타입에서 자식 클래스 타입으로의 타입 변환은 반드시 명시해야 한다.
추상 클래스 VS 인터페이스
추상 클래스 (abstract class)
-추상 클래스는 미완성 설계도
-클래스 내 '추상 메소드'가 하나 이상 포함되거나 abstract로 정의된 경우
->추상 클래스는 상속(Inherit)의 개념
인터페이스(interface)
-인터페이스는 모든 메소드가 추상 메소드인 경우
-인터페이스는 다형성(Polymorphism)의 개념
=>결론
추상 클래스는 부모가 가진 기능을 물려받으면서 오버라이드할 수 있는 상속을 위한 틀
인터페이스는 다형성을 제공하는 반드시 구현해야 하는 메소드들을 포함한 틀
예외 처리(exception handling)
Error VS Exception
-Error
에러는 프로그래머가 할 수 있는 일이 (일단은) 없다.
발생하면 애플리케이션이 비정상 종료된다.
-Exception
프로그래머가 만든 프로그램이 잘못된 방향으로 흘러갈 때
ex)나누기에 사용되는 변수에 0이 들어갔음
-예외처리
'프로그래밍에서 예외처리를 한다'라는 의미는
->에러가 발생한 상황 자체를 뒤집지는 못한다.
->과거로 다시 돌린다는 의미가 아니라! 끝까지 수행하고자 하는 코드를 다 실행하는 데에 목표.
-문제가 발생해도 프로그램이 종료되지 않고 일단 목적한 바까지 끝까지 다 수행하도록 코딩.
ex)원래 목표가 물컵을 들고 A지점까지 가는 것이라고 쳤을 때,
가다가 물컵을 쏟으면 프로그램이 멈춘다.(에러 발생)
->여기서 물컵은 쏟았지만 신경쓰지 말고 일단 A지점까지 계속 가! 도록 하는 것이 예외처리.
try-catch
exception 감지 및 처리를 위한 구문.
-실행 타임 에러를 미연에 방지
-에러 이벤트 발생시 발생 위치 확인, 적절한
try 블럭 내에서 예외가 발생한다면?
-발생한 예외와 일치하는 catch 블럭 검색
-일치하는 catch 블럭이 있다면 그 catch 블럭 내 문장 수행 후 전체 try-catch문 빠져나감
-일치하는 catch 블럭이 없을 경우 예외는 처리되지 못함
try 블럭 내에서 예외가 발생하지 않으면?
-catch 블럭을 거치지 않고 전체 try-catch문을 빠져나감
'📒 education archive > 🎀JAVA' 카테고리의 다른 글
자바 공부 기록(10)-컬렉션 프레임웍,ArrayList (0) | 2021.08.19 |
---|---|
자바 공부 기록(9)-쓰레드 (0) | 2021.08.14 |
자바 공부 기록(7)-상속,오버라이드,일반 제어자 (0) | 2021.08.13 |
자바 공부 기록(6)-생성자,캡슐화,접근 제어자 (0) | 2021.08.13 |
자바 공부 기록(5)-기본형 참조형 타입 매개변수,문자열 클래스 (0) | 2021.08.13 |