자바17강 interface
깃허브:
https://github.com/BigJadeStone/java-class
GitHub - BigJadeStone/java-class: 자바수업 내용물 저장
자바수업 내용물 저장. Contribute to BigJadeStone/java-class development by creating an account on GitHub.
github.com
<어제 복습 내용>
-Quiz14 폴더 어제 내용 복습겸 실습 파일.
내용: abstract, 다형성(클래스캐스팅), static 선언
<오늘 수업내용>
자바교안 17강
#인터페이스
: 유저와 사용자간을 중간에서 연결해주는 매개체
참고폴더 : day09.inter.basic , day09.inter.basic2, day09.inetr.basic3 , day09.inetr.default_ , Quiz15(인터페이스 실습)
상수, 추상메서드만 가지고 있는 인터페이스
+default메서드, static메서드도 가지고 있을 수 있음.
-인터페이스는 클래스가 아니기 때문에
일반 변수, 일반 메서드를 사용 할 수 없다!
<-> 상수,추상메서드,디폴트 메서드, 스태틱 메서드는 사용가능.
- default메서드 참고 폴더 : day09.inetr.default_
- 인터페이스 선언된 변수는 public static final을 생략하더라도 컴파일 과정에서 자동으로 붙게
됩니다. (상수)
- 인터페이스의 메서드를 추상메서드 형식으로 선언하면 abstract를 붙이지 않더라도 자동으로
컴파일 과정에서 붙게 됩니다. (추상메서드)
- 추가적으로 static메서드의 선언 또한 가능 합니다. (자바 1.8버전 이후)
인터페이스 왜 생겼을까?
사용방법: class Dog extends Animal implements 포유류 {...} -> 부모클래스 상속을 먼저 해주고 그 다음에 인터페이스 상속을 해준다. 순서 잘 숙지해두기.
-인터페이스는 클래스가 아니기 때문에. 한 클래스에서 클래스 따로 인터페이스를 따로 다 상속받을 수 있다.
-인터페이스는 객체 생성이 불가능합니다.
-★★★상수, 추상메서드 +@ (default 메서드, static메서드) -> 인터페이스의 주된 사용 목적임.
실습
(여기다가 day09.inter.basic 의 주석 내용들 정리해서 넣기.)
-인터페이스는 implements키워드로 상속을 받습니다.
double PI = 3.14; //인터페이스에 변수를 선언-> public 상수로 선언됩니다
void method01(); //인터페이스에 메서드를 선언 -> public 추상메서드가 됩니다.
-인터페이스도 부모타입이 될 수 있습니다.
<주의!
#상속받는 부모클래스가 있고 따로 또 인터페이스를 상속 받는 자식클래스가 있을 때.
*부모와 인터페이스 안에 모든 기능을 사용하고 싶다면 객체 생성시 자식클래스 타입에다가 객체를 담아주어야 하고.
*자식 클래스를 부모에 담아서 사용할 때는 인터페이스 내부의 기능은 사용하지 못 하고 부모 클래스와 자식클래스의 기능만 사용할 수 있게됨.
*자식 클래스를 인터페이스 타입에 담아서 사용하면 부모클래스의 기능은 사용이 안되고 인터페이스와 자식 클래스의 기능만 사용 할 수 있게됨.
* #줄의 관계가 형성되어 있을 때. 부모 클래스로 캐스팅된 자식변수는 인터페이스 타입으로 캐스팅이 가능 하며 객체 앞에 (인터페이스명)을 써주어야함. 반대로
자식클래스가 인터페이스 타입으로 형변환(다형성)되었을 때 이를 또 부모 클래스로 형변환 할 수 있다. 이때 자식클래스앞에 (부모클래스명) 을 기재해줌으로서 캐스팅 해준다.
>
- 추상클래스와 인터페이스는 다른듯하나 비슷함. 하지만 인터페이스에서 더 다양한 것들을 할 수 있음.
-> 인터페이스의 기능1 (다중 상속을 지원한다) 내용으로 이동.
인터페이스의 기능1 (다중 상속을 지원한다)
-인터페이스도 데이터 타입(부모타입)이 될 수 있다!!
-인터 페이스는 다중 상속이된다.
-모든 인터페이스의 기능을 다 사용하려면 클래스의 객체를 자기 자신에게 담아야만 사용이 가능하다.
인터페이스 기능2 (메서드 명세서)
메서드 명세서로서의 기능을 한다는데 그게 무슨말인가?!
비슷한 부류의 클래스들을 여럿 만들어야 한다. 그 클래스들의 뼈대가 되는 메서드를 인터페이스에 정의해 놓는다.
인터페이스를 상속받아서 각 클래스들은 세부적으로 각 개체만의 특징을 바탕으로 기능들을 재정의 한다.
이렇게 하나의 비슷한 클래스들이 모인 집단이 형성된다. 메인클래스에서 이 각각의 객체들을 확인하거나 사용하고 싶다.
그럼 일반적으로 각각의 객체를 매번 새로 생성해서 사용해야 하지만 인터페이스를 이용하면 사용과 조회가 훨씬 간편해진다. 인터페이스 타입을 선언해놓고 각각의 객체들을 집어넣어서 편하게 사용가능하다.
인터페이스 기능3
인터페이스에 기본적인 기능들을 다 정의해놓고
비슷한 역할을 하는 객체들이 이 인터페이스를 상속받아서 각각의 객체마다의 특징을 적용해서 사용할 수 있다.
<오늘 기억할 내용>
-웹에서 f12누르면 개발자 도구창 뜸.
- Integer.parseInt() 은 무엇인가 ?
파라미터로 받은 문자열이나 int를 서로 치환해주는 integer 클래스의 pareInt() 스태틱 메서드.
참고 : https://hianna.tistory.com/524
-반복문의 break, continue, return
break: 해당 반복문에서 나가기.
continue: continue 선언 아래로 다 건너뛰고 반복문의 다음 회차로 넘어감.
return: return에서 반복문 종료.
<주말에 해야할 일>
-자바 클래스 깃허브 파일들 정리하기.
-복습하고 문제풀기.
-정적 초기화자 static initializer 한번 다시 찾아서 공부하기