본문 바로가기

구디 아카데미 수료 과정/JAVA

구디아카데미 후기/클라우드 활용 자바개발자 양성과정/•11일차 /국비지원IT개발자 취업 / 김명신 강사님/11.06

 

implements -> class가  interface를 '구현'할 때 사용 

interface= 메서드, 상수만 가지고 public이어야함

class가 interface를 구현하려면  interface에 정의된 모든 메서드를 구현해야함

 

 

•이걸  쉽게 바꾸면 ((Flyable).a).fly();  이라고 쓰면 됨

• if(a instanceof Flyable) 안했으면 Monkey에는 fly가 없기 때문에 형변환이 안돼서 오류 났을거임

 

 

 

 

 

 

 

 

jdk 8 이전 : 인터페이스의 멤버의 상수와 추상메서드만 가능함

jdk 8 이후 : default 메서드, static 메서드 추가됨 ( 구현부가 추가됐다는 말)

 

인터페이스 내에 구현부가 존재하는 메서드

dafault 메서드 : 인스턴스멤버. 참조변수명.메서드명으로 호출

                            + 오버라이딩해서 내맘대로 바꿔쓸수있음

static메서드: 클래스멤버. 인터페이스명.메서드명으로 호출

 

 

인터페이스는 다중 구현이 가능하기때문에 문제가 발생함

->구현 클래스의 객체에서 같은 메서드가 여러 존재할 수가 있음  

->구현 클래스에서 default 메서드를 오버라이딩 해야함 

                              (static 메서드는 인터페이스명.메서드명으로만 호출하기때문에 문제없음)

 



람다

• 람다식(함수객체)예제: jdk8 이후부터 사용 가능함

• 람다식으로 사용할 수 있는 인터페이스는 FunctionalInterface 여야함

                                                                     FunctionalInterface = 추상메서드가 1개만 존재하는 인터페이스

 

• 추상메서드의 매개변수가 없고, 리턴타입도 없는 경우에 하는 방법

                                       () -> {....};

 

• 람다식 내부에 실행되는 문장이 1개인 경우에는 { } 생략해도 됨

 

• 추상메서드에 매개변수가 존재하고  리턴타입이 없는 경우

                                         (매개변수) -> {....};

   ->매개변수가 1개인 경우 ( ) 생략 가능

   -> 실행 문장이 1개인 경우 { } 생략 가능 

 

• 매개변수, 리턴값이 모두 있는 경우  

                             (x,y) -> {.....};

     문장에 return 문장 하나만 있는 경우   { } , return 생략가능



중첩클래스(내부클래스)

클래스 내부에 존재하는 클래스

중첩클래스의 특징

1. 클래스이기 때문에 참조자료형임 (객체화 가능)  ,Object 클래스의 하위클래스, 다른 클래스를 상속가능 (그냥 클래스라고 이해)   

     외부클래스명.중첩클래스

    중첩클래스별로 바이트코드 생성

 

2. 외부클래스의 private 멤버에 접근이 가능

 

•  인스턴스 중첩 클래스 : 객체화시 외부클래스의 객체화를 먼저 해줘야함  (참조변수명.)

 

•  static 중첩 클래스 : new 외부클래스명.중첩클래스(); 로 객체화가능

•  local 중첩 클래스 : 메서드 내부에서 선언된 클래스. 해당 메서드에서만 접근 가능.

 

 

 

 

지역중첩클래스의 멤버메서드에서 외부메서드의 지역변수(pv)는 상수화 되어야 한다.(변경할수없다)

지역변수의 변경이 없는 경우는 상수로 판단함

지역변수의 변경이 되는 경우는 오류 발생

 

 

 

 

중첩클래스 객체에서 this의 사용

 

 

소감: sogam............

국비지원IT개발자취업 김명신강사님 구디아카데미 후기