JAVA
내부 클래스의 종류, 특징, 선언
내부 클래스의 종류, 특징, 선언
2022.04.07내부 클래스 (inner class) 클래스 안의 클래스 내부 클래스란, 클래스 안에 클래스를 넣는 것이다. 예를 들어서 A라는 클래스가 있고, B라는 클래스가 있을 때, 클래스 B를 클래스 A안에 집어 넣을 수 있다. 반대로도 가능하고 말이다. 오측 코드는 A클래스 안에 B클래스를 넣은 것인데, A클래스는 B의 외부클래스가 되고, B클래스는 A의 내부 클래스가 된다. 내부 클래스의 장점 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다. 이렇게 하면 어떤 장점이 있냐면, B클래스 안에서 A의 멤버들에 쉽게 접근할 수 있다. 만약에, 좌측코드에서 B클래스안에서 A의 멤버에 접근을 하려면, B클래스에서 A의 객체를 생성해야 한다. 그런데, 오른쪽 코드에서는 B클래스에서 A의 객체생성없이 A의 멤..
디폴트 메서드와 static메서드
디폴트 메서드와 static메서드
2022.04.07디폴트 메서드와 static 메서드 인터페이스에 디폴트 메서드, static메서드 추가 가능 (JDK1.8 부터) default 메서드와, static메서드는 JDK1.8부터 추가되었다. static메서드는 iv가 쓰이지 않아서 독립적이다. 그래서 인터페이스나 어디든지 포함되지 못할 이유가 없었지만, 그동안은, 인터페이스의 원칙을 단순화 하기위해 뺏었다가 추가한 것이다. default메서드도 마찬가지이다. 원래는 인터페이스에서 추상메서드만 가지게 했었는데, 이미 충분히 Java가 널리 퍼졌고, 많은 사람들의 요구에 의해 dafault메서드와 static메서드를 추가할 수 있게 되었다. (default method)가 추가된 이유 기존에는 인터페이스에 새로운 메서드(추상 메서드)를 추가하기 어려웠음 인터..
인터페이스의 장점 (2)
인터페이스의 장점 (2)
2022.04.07인터페이스의 장점 개발 시간을 단축할 수 있다. 이 그림에서는 A가 B를 사용한다. 그래서, A가 코드를 작성하려면 B가 먼저 만들어져 있어야 한다. 그래서, B가 완성될 때까지 A는 기다려야 한다. 그러면, 아무래도 개발 시간이 더 걸릴 것이다. 그런데, 이 그림에서는 A는 I를 사용하면 된다. B가 개발되지 않았어도 I만 있으면 된다. 즉, 껍데기만 있으면 된다. 앞서, 추상클래스에서 배웠듯, 추상 메서드를 호출할 수 있다. 인터페이스는 추상 메서드 집합이므로 B가 완성이 되지 않았더라도, A는 I(인터페이스)를 이용해서 코드를 작성할 수 있다. 추상 메서드지만, 이 메서드가 완성되어 있다고 가정하고 사용하는 것이다. 그리고 B는 I(인터페이스)에 있는 추상 메서드를 구현하면 된다. 그래서 인터페이스..
인터페이스의 장점 (1)
인터페이스의 장점 (1)
2022.04.06지금까지는, 인터페이스의 문법이나, 선언, 구현, 다형성 등에 대해서 배웠다. 이런 것들은 이런것들은 인터페이스의 개념적인 것들이 아니다. 단순히, 자바에서 인터페이스를 어떤식으로 쓰는지, 문법적인 부분에 대한 설명이었다. 지금부터는 인터페이스의 개념과 장점에 대해서 알아보자. 인터페이스의 장점 두 대상(객체) 간의 '연결, 대화, 소통'을 돕는 '중간 역할'을 한다. 핵심적인 인터페이스 의미는 것은, 두 대상(객체)간의 중간역할을 하는 것이다. interface = inter(사이) + face(얼굴, 대상) 어떤 두 대상이 직접 소통할 수도 있겠지만, 중간에서 소통을 도와주는 역할을 인터페이스가 한다. 예를 들어서, 어떤 기계가 있다. 기계에는 톱니바퀴도 있고, 모터도 있다. 이 기계를 사람이직접 조..
인터페이스와 다형성
인터페이스와 다형성
2022.04.06인터페이스를 이용한 다형성 다형성이란, Tv t = new SmartTv(); 처럼, 조상타입 참조변수로 자손타입 객체를 가리키는 것을 말한다. 인터페이스도 다형성이 성립한다. 인터페이스도 구현 클래스의 부모? - Yes 엄밀히 말하면, 부모는 아니다. 부모는 클래스만 가능하기 때문이다. 이 코드를 보면, Fighter class가 있는데, Unit으로부터 상속을 받고, Fightable인터페이스를 구현 한다. Fighter 클래스의 구조인데, 부모인 Unit클래스로부터 상속을 받는다. 그리고 Fightable은 엄밀히 말하면 부모는 아니지만 거의 부모나 다름없다. 만약에 Fightable이 클래스라면, Fighter클래스가 상속받는 부모가 2개가 되어 다중상속이 된다. 다중 상속의 문제는, 충돌이라는 ..
인터페이스의 선언, 상속, 구현
인터페이스의 선언, 상속, 구현
2022.04.06인터페이스 (interface) 추상 메서드의 집합 (프로그래밍 관점) 구현된 것이 전혀 없는 설계도. 껍데기(모든 멤버가 public) 인터페이스의 정의는, 일반적인 관점에서의 정의, 프로그래밍적 관점에서의 정의로 나눌 수 있는데, 이번시간에는 프로그래밍 관점에서의 인터페이스에 대해 생각해보자. 인터페이스는, 추상메서드의 집합이다. 사실은, 추상 메서드 외에도, static메서드, 상속, default메서드 인터페이스의 요소인데, 이것들은 부수적인 것이다. 핵심이 아니다. 추상 메서드가 인터페이스의 본질이자 핵심이다. 즉, 인터페이스는 추상메서드 집합이므로, 구현된 것이 전혀 없는 설계도이자 껍데기이다. 인터페이스의 모든 멤버는 public이다. 객체지향 개념 책들을 보면, 이런 그림이 많이 나온다. ..