본문 바로가기

JAVA

(4)
1.8 버전 이후로 바뀐 것들 1.람다식 ,함수형 인터페이스 람다식은 익명 함수가 아니라 익명 객체이다.(일급객체) 예시) (a,b)=>a>b?a:b // 위에 람다식은 밑에와 같은거 new Object(){ int max(int a,int b) { return a>b?a:b; } } 이 익명객체 람다식은 객체이므로 참조변수의 타입은 Object obj 이다. 그러나 여기서 int value=object.max()가 되지않는다 왜냐하면 Object 에는 max를 호출할수가 없다! -> 그래서 함수형 인터페이스를 사용한다. 사용하는 이유 : 1. 코드를 간결하게 만들 수 있다. 또한 재사용성이 높아진다. 2. 함수를 만드는 과정없이 한번에 처리할 수 있어 생산성이 높아진다. 3. 병렬 프로그래밍에 용이하다. 스레드나 이벤트 핸들링과 관..
wrapper class (boxing vs unboxing) wrapper class 프로그램에 따라 기본 타입의 데이터를 객체로 취급해야 하는 경우가 있습니다. 예를 들어, 메소드의 인수로 객체 타입만이 요구되면, 기본 타입의 데이터를 그대로 사용할 수는 없습니다. 이때에는 기본 타입의 데이터를 먼저 객체로 변환한 후 작업을 수행해야 합니다. 이렇게 8개의 기본 타입에 해당하는 데이터를 객체로 포장해 주는 클래스를 래퍼 클래스(Wrapper class)라고 합니다. boxing vs unboxing 위의 그림과 같이 기본 타입의 데이터를 래퍼 클래스의 인스턴스로 변환하는 과정을 박싱(Boxing)이라고 합니다. 반면 래퍼 클래스의 인스턴스에 저장된 값을 다시 기본 타입의 데이터로 꺼내는 과정을 언박싱(UnBoxing)이라고 합니다.
오버라이딩 오버라이딩이란? 객체지향 프로그래밍에서 상속 관계에 있는 클래스에서 부모 클래스의 메서드를 자식 클래스에서 재정의 하는 것을 의미한다. 이런 오버라이딩은 다형성을 구현하는데 매우 중요한 역할을 한다. 오버라이딩을 통해 같은 타입의 객체들이 다양한 방식으로 동작할 수 있도록 해준다. 이렇게 다형성을 활용하면 코드의 재사용성과 유연성이 증가하며 객체 간의 결합도가 낮아져서 유지보수성과 확장성을 높일 수 있다! 그리하여 오버라이딩을 통해 다형성을 구현 할 수 있으며 이를 통해 객체지향 프로그래밍에서 매우 중요한 이점들을 얻을 수 있다! 보통 자바에서는 @Override를 적는데 이를 통한 이점에 대해서 공부한걸 적어본다. 먼저 @Overrided 어노테이션은 메서드를 오버라이딩할 때 사용한다. 이를 사용하면 ..
객체지향에서 인터페이스? 인터페이스 인터페이스는 상수와 추상메소드만 존재하는 추상클래스이다. 그래서 메소드의 선언부만 있고, 몸통 부분은 없는 메소드이다 이러한 인터페이스가 객체지향에서는 어떠한 의미를 가질까 ? 1.추상화 인터페이스는 추상화를 통해 구현되며,객체의 행동을 나타내는 메서드의 시그니처만을 가진다. 2.다형성 인터페이스를 구현한 여러 객체들이 동일한 인터페이스 타입으로 다룰 수 있으므로 코드 재사용성과 유연성을증가시키는데 도움이 된다. 3.상속성 클래스처럼 상속을 통해 확장할 수 있다 4.느슨한 결합 객체들 간의 결합도를 낮추는 역할을 한다. 인터페이스를 통해 객체 간의 의존성을 줄이고 객체들 간의 관계를 느슨하게 만들어 유지보수성과 확장성을 높일 수 있다. 5.구현 강제 인터페이스는 선언만 되어있으므로 구현을 반드..