본문 바로가기

Java

(25)
Join 종류 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com Join join join 또는 결합 구문은 한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 열로 표현한 것이다. 따라서 조인은 테이블로서 저장되거나, 그 자체로 이용할 수 있는 결과 셋을 만들어 낸다. JOIN은 2개의 테이블에서 각각의 공통값을 이용함으로써 필드를 조합하는 수단이 된다. -위키백과- 지난 시간에 join 기본에 대해서 알아보았었습니다. 이번에는 join에 대해 더 자세하게 알아보겠습니다. 기본 데이터베이스에서 데이터는 다수의 테이블에 나누어서 저장되어 있습니다. 모델링 초기 과정에서 정보가 한 테이블에 모여있다고 하더라도 정규화를 거치면서 큰 테이블이 작은 테이블로 나뉘고 중복을 제거하..
추상 클래스 & 인터페이스 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com 추상 클래스 vs. 인터페이스 앞서 추상 클래스와 인터페이스에 대해서 알아보았었는데요 비슷한 점이 많았습니다. 그럼 비슷한데 구분하는 게 의미가 있나?라고 생각하실 수도 있는데 다른 점들이 있습니다. 목적에서 가장 큰 차이를 갖는다고 할 수 있습니다. 추상 클래스는 코드의 집중이 목적입니다. 하위 클래스에서 필요로 하는 공통적인 기능들은 구현해두고 상속받아 활용할 수 있도록 하되, 하위 클래스에서 구현할 수 밖에 없는 기능들을 추상 메서드로 정의하여 다형성을 실현합니다. 인터페이스는 코드의 분리가 목적입니다. 두 모듈 사이에 인터페이스를 두어 모듈의 응집력은 높이되 의존성은 낮춥니다. 개발자로 하여금 인터페이스의 목적..
인터페이스 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com 인터페이스 인터페이스 인터페이스는 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다. 자바에서 인터페이스는 두 모듈 간, 두 기능 간 경계면입니다. 말이 매우 추상적인데, 예시를 생각해보겠습니다. 선풍기를 생각해보겠습니다. 우리가 정지, 미풍, 약풍, 강풍 등의 버튼만 눌러주면 선풍기가 세기에 맞춰서 동작합니다. 우리는 정지, 미풍, 약풍, 강풍 등의 버튼에 대한 정보는 알고 있지만, 그 버튼을 누름으로써 선풍기 내부에서 어떤 작업들이 일어나 동작하게 되는지에 대해서는 관심이 없습니다. 단지 '어떤 버튼을 눌렀을 때 어떤 일이 일어나는구나' 만 알고 있으면 선풍기를 사용하는 ..
추상 메서드와 추상 클래스 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com 추상 메서드와 추상 클래스 추상 메서드란, 선언만 되어있고 구현은 되어있지 않은 메서드를 의미합니다. public abstract void doSomething(); 위와 같은 형태로 접근 지정자 뒤, 반환형 앞에 abstract 예약어를 붙여 선언해줍니다. 추상 메서드는 추상 클래스 안에 선언되며, 해당 추상 클래스를 상속받은 클래스가 같은 추상 클래스가 아니라면, 반드시 해당 메서드를 구현해주어야 합니다. 추상 클래스란, 직접적으로 생성자를 호출하여 인스턴스를 생성할 수 없는 클래스를 의미합니다. 추상 클래스는 추상 메서드를 가질 수도, 가지지 않을 수도 있습니다. public abstract class Perso..
(상속) 메서드 오버라이딩과 다형성 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com 다형성 다형성이란 다양한 형태를 취할 수 있는 능력을 의미합니다. 객체지향 프로그래밍에서는 다형성의 강력함을 통해 코드를 매우 간결하게 할 수 있습니다. 이런 다형성을 구현하는 대표적인 방법이 자바에서 메서드 오버 라이딩입니다. 간단한 예시와 함께 다형성에 대해 알아보겠습니다. 위와 같은 상속 구조가 있다고 생각해보겠습니다. 제가 전에 올린 상속 관련 글들을 보신 분들이라면 아시겠지만, Person type reference로 professor, student, gamer 인스턴스 모두를 가리킬 수 있습니다. (업 캐스팅) 소스코드를 보겠습니다. public class Person { public void doSome..
(상속) 메서드 오버라이딩과 동적 바인딩 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com 메서드 오버 라이딩 오버 라이딩이란, 하위 클래스에서 상위 클래스의 함수를 재정의하는 것을 의미합니다. 자바에서는 함수를 식별할 때 이름과 매개변수로 식별합니다. 이름과 매개변수가 같은 함수, 즉 동일한 함수를 재정의 하는 것을 오버 라이딩이라고 합니다. 상속에서는 이런 오버 라이딩을 통해 다형성의 기반을 쌓는데요 오늘은 오버 라이딩에 대해서만 간단하게 알아보겠습니다. 아래 소스코드를 먼저 보겠습니다. class SuperClass { void f() { System.out.println("SuperClass"); } } class SubClass extends SuperClass{ @Override void f() ..
(상속) 업캐스팅과 다운캐스팅 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com 업 캐스팅과 다운 캐스팅 상속에서 업 캐스팅은 아래와 같이 요약할 수 있습니다. 상위 클래스 레퍼런스 변수에 하위 클래스 인스턴스를 담는다. 아래 예시를 보겠습니다. class A { } class B extends A{ } public class C extends B{ } 위와 같은 상속 구조에서 A = new B(); A = new C(); B = new C(); 와 같이 상위 클래스 레퍼런스에 하위 클래스 인스턴스를 담는 것을 업 캐스팅이라고 합니다. 업 캐스팅 시에는 위와 같은 구조를 갖기 때문에, 타입의 안전성이 보장됩니다. 예전에 자동 형 변환과 강제 형 변환에 대해서 다뤄본 적이 있었습니다. 업캐스팅시에는..
(상속) 생성자 호출 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com 상속에서 부모 생성자의 호출 상속 관계에 있는 클래스들 중, 하위 클래스가 생성될 때는 자동으로 상위 클래스의 생성자가 먼저 호출되고 나서 하위 클래스의 생성자가 호출됩니다. 부모가 있어야 자식이 있을 수 있는 것과 같은 원리라고 생각하시면 됩니다. 위와 같은 상황에서 C를 생성하면 먼저 A, B의 생성자가 호출된 뒤에 C의 생성자가 호출됩니다. 코드로 보겠습니다. class A { A() { System.out.println("A"); } } class B extends A{ B() { System.out.println("B"); } } public class C extends B{ C() { System.out.p..