본문 바로가기

JAVA

[WEB]DAY15_ 다중 상속, 내부 클래스, 익명 클래스

다중 상속

: JDK8버전이후부터는 사실상 다중상속이 지원된다.
바로 인터페이스에서 일반 메소드를 선언할 수 있기 때문이다.
하지만 반드시 접근자는 default로 설정해주어야 한다.

① 두 개이상의 인터페이스에 동일한 이름의 필드를 지정받은 클래스에서

   사용하고자 할 때에는(모호성) 재정의를 해서 사용한다.


② 부모 클래스와 인터페이스에 동일한 이름의 필드가 있다면

   부모 클래스가 우선 사용된다. 만약 인터페이스의 필드를 사용하고자 할 때에는
   재정의 후 인터페이스명.super.필드명()으로 호출하여 사용한다.

 


내부 클래스

: 하나의 클래스 안에 여러 기능들이 섞여있다면 각 기능들을 클래스로 분리해야 관리하기 쉽다.
하지만 다른 클래스로 만들게 되면 상속도 해주어야하고 오히려 관리하기 더 어려워질 수 있다. 

따라서 기존의 클래스 안에 클래스를 선언하여 관리하는 기법을 내부 클래스라고 한다. 

외부 클래스의 필드도 같은 필드로 인식되기 때문에 마치 내것처럼 내부 클래스에서도 사용가능하다.

내부 클래스로 선언하면 외부에서 접근하지 않도록 보호할 수 있기 때문에 캡슐화라는 용어로 사용한다.

 

더보기

- 또 다른 설명

클래스 안에 클래스를 선언하여 외부 클래스의 필드 접근을 용이하게 하기 위해 사용하는 기법. 
다른 곳에 나타나지 않도록 하기위한 목적도 가지고 있으며 이것을 캡슐화라고 한다. 

하나의 클래스에 두 개이상의 작업이 있을 때 클래스로 분리해서 관리하는 것이 더 효율적이다.

하지만 밖으로 빼버리면 상속뿐만 아니라 설계가 복잡해진다. 
이럴때에는 기존 클래스 안에 내부클래스로 선언한 후 사용한다. 
다른 곳에서는 이 작업이 필요없기 때문에 캡슐화 작업을 하기 위함이다.



- 내부 클래스 사용 방법
외부클래스명 외부객체 = new 외부생성자();
외부클래스명.내부클래스명 내부객체 = 외부객체.new 내부생성자();


익명 클래스

: 이름이 없는 클래스. 메소드 안에서 클래스 중괄호가 열리는 기법, 일회성으로 사용된다. 



jsp Html + java
php 소규모, 대규모로하면 겁나 어려움
asp 유지보수 좋음, 대신 비쌈
Django 대규모/파이썬 , 빅데이터를 시각화할 때 많이 사용함