목록Programming/Java (15)
개발자 항해
인터페이스 장점 4. 모듈간 독립적 프로 그래밍으로 인한 개발기간 단축 - 각 모듈간에 연계된 부분을 공통 인터페이스 내의 추상메서드로 구현하고 각 모듈에서는 해당 인터페이스의 상속을 받아 구현함으로써 공통된 작업 형태를 지닌채 각각 서로의 작업만 작성하고 상대방의 작업 진행 여부와 관계없이 각자의 작업이 진행되고 공통 모듈을 통해 테스트가 수행되기 때문에 개발 기간이 단축된다. 로그인 화면 구현시 백앤드와 프론트앤드 사이에 간단한 예시
3) 인터페이스 장점 - 상속 관계가 없는 객체끼리의 관계 부여하여 다형성 활용가능 ① 상속 관계가 아닐 경우 불편한 예 HandPhone 클래스와 DigitalCamera는 특정 클래스와 상속관계가 아니므로 두 클래스의 유일한 공통 클래스는 Object 클래스 뿐이다. 따라서, 업캐스팅을 통해 다형성을 적용하려면 Object 타입으로 업캐스팅해야 하며 업캐스팅 후에는 두 객체의 고유 멤버 접근이 불가능하므로 다시 다운캐스팅을 통해 각 객체의 고유 멤버에 접근해야한다. ② 인터페이스를 통해 상속관계가 아닌 클래스끼리 상속 관계 부여 HandPhone2 클래스와 DigitalCamera2는 특정 클래스와 상속 관계가 아니지만 두 클래스와 유일한 공통클래스는 Object 클래스 외에 Charable 인터페이..
인터페이스(interface)란? 모든 메서드가 추상메서드로만 이루어진 일종의 기본 설계도로 구현된 코드가 없는것이 특징이다. 그래서 인터페이스로 인스턴스를 생성할수도 없다. 그렇다면 인터페이스는 왜 쓰는것일까? 1. 인터페이스 필요성( 장점 ) 1) 구현의 강제성 부여 (= 통일성) - 인터페이스를 상속받은 서브클래스 들은 반드시 추상메서드를 구현해야한다. (이때 메서드 이름이 통일된다.) 2) 모듈 교체 용이 (= 무기교체, C 타입 usb) - 부모타입인 인터페이스 타입을 변수로 사용하여 각 서브 클래스를 다룰경우 특정 서브클래스가 또 추가되더라도 공통 코드의 변경이 필요없이 새로운 클래스만 정의하게 되면 언제든지 인스턴스 교체를 통해 서브클래스를 다룰수있다. ex) JDBC 인터페이스(Connec..
추상 메서드란? 1) 메서드 구현부(= 바디{})가 없는 메서드 (미완성 메서드) 2) 메서드의 동작을 기술하는 구현부가 없는 추상메서드는 실행할 수 있는 코드가 없으므로 외부로부터 호출하면 안된다. => 따라서, 추상 메서드를 갖는 클래스는 반드시 추상클래스로 선언되어야 한다. 3) 메서드 정의시 선언부의 접근제한자 뒤에 abstract 키워드를 붙여 정의 => abstract 키워드가 붙은 메서드는 추상메서드이므로 바디{}를 가질수 없다. (따라서, 메서드 선언부 마지막에 바디{} 대신 세미콜론(;)으로 끝냄) 4) 서브클래스에서 반드시 오버라이딩 하도록 강제성을 부여해야하는 메서드는 슈퍼클래스에서 추상메서드로 선언하면 서브 클래스가 무조건 오버라이딩 필수다. => 강제성을 통해 업캐스팅 시 코드의 ..
싱글톤 패턴식 싱글톤 패턴을 하나하나 분석해보자 각각의 의미를 간단히 얘기해보자면 private로 생성자 접근을 차단하고 static메서드를 통해 유일한 인스턴스를 반환한다는 의미 아래는 복잡한 설명을 없앤 원래 식이다. 유일한 인스턴스반환? 그렇다면 주소값이 같을까? static이므로 클래스명.메서드명으로 불러 반환되는 인스턴스를 car1 car2에 담고 주소값출력 및 (==) 연산자로 비교해본다. 주소값이 같고 결과 값은 true가 반환 되었다. 그렇다면 노멀 클래스를 생성해서 인스턴스를 불러왔을때는 싱글톤과 결과가 다를까? 예시를 위해 노멀 클래스 생성. 그리고 각각 인스턴스를 생성하여 n1, n2변수를 찍어보면 노멀클래스는 힙 안에 각각 n1,n2인스턴스가 따로 생성되고 그로인해 n1,n2에는 서..
오버로딩이란? 사전적 의미로는 과적하다, 과중하게 부담시키다의 뜻이있다. 그 말과 비슷하게 같은 이름의 메서드를 서로 다른 작업을 처리하도록 하는것이다. 오버로딩은 4가지 특징이 있는데 다음과같다. 1) 메서드명은 동일해야한다. 2) 매개변수의 타입이나 갯수는 달라야한다.(순서가 달라도 됨) 3) 리턴타입이 다른것은 오버로딩과 무관하다. 4) 매개변수의 변수명만 다른것은 오버로딩과 무관하며 각각 다른 메서드를 호출하도록 '구분'되어야 한다. 위 예제와 같이 매개변수별로 메서드기능을 달리 구현하고 싶을때 오버로딩을 사용하지 않으면 메서드를 각각 다른이름으로 정의해줘야 한다. 하지만 오버로딩을 사용하면 run이라는 같은 이름의 메서드로 매개변수만 달리하여 각각 다른 기능을 구현할수 있다. 오버라이딩이란? o..
상속이란? 슈퍼클래스(부모)의 모든 멤버를 서브클래스(자식)에서 물려받아 선언없이 사용하는것이다. - 상속을 받은 서브클래스에서 별도의 선언이나 정의 없이도 슈퍼클래스가 가진 멤버변수나 메서드 등을 자신의 멤버처럼 사용가능하다. - 상속을 활용하면 코드 중복이 제거 되며, 유지보수에 용이해진다. - 슈퍼클래스가 가진 멤버를 물려받아 서브클래스에서 멤버를 추가하므로 기존 클래스를 확장하는 개념으로 사용된다. - private이 적용된 멤버는 상속되지 않는다. - 생성자도 상속되지 않는다.(생성자는 자신의 클래스이름과 동일해야하는데 생성자가 상속되면 이름이 달라지기때문에 안된다.) - 자바는 단일상속만 지원 - 동시에 2개이상의 클래스를 상속받을 수 없다. - 클래스 정의시 별도의 extends 키워드를 사..