다중 상속이란한 클래스가 2개 이상의 클래스로부터 상속을 받는 것을 의미한다.인어 클래스가 사람 과 물고기 모두로부터 상속을 받는 경우를 생각할 수 있따다중 상속의 문제점다이아몬드 문제 의 발생사람 클래스 물고기 클래스가 모두 수영 이라는 메서드를 가지고 있는 경우인어 클래스 사람클래스 혹은 물고기클래스 둘 중의 어느 수영메서드 를 상속받아야하는지 애매모호해진다.자바에서의 다중 상속자바는 다중 상속을 지원하지 않기로 했다.장점은 유용하지만… 문제점이 더 큰 영향을 준다.인터페이스의 도입다중 상속의 장점을 활용하기 위해 인터페이스라는 개념을 도입하였다.클래스는 여러 인터페이스를 구현할 수 있다는 장점인터페이스 자체는 구체적인 구현을 포함하지 않기에 다이아몬드 문제를 피할 수 있다는 장점 Uploaded b..
상속에서의 클래스 간의 관계 정의법정의is a kind of 관계를 나타낸다하위 클래스가 상위 클래스의 특정 유형 또는 분류임을 의미함예시고래는 동물의 한 분류이다고래 ⇒ 하위클래스동물 ⇒ 상위클래스인터페이스에서의 클래스 간의 관계 정의법정의is able to 관계를 나타낸다.클래스가 인터페이스에 정의된 특성 행동 또는 기능을 수행할 수 있음을 나타냄예시고래는 헤엄칠 수 있음고래 클래스가 헤엄치다 기능을 수행할 수 있음을 나타낸다.자바 API 예시인터페이스는 클래스가 수행 할 수 있는 특정 기능을 나타내며, be able to 형식으로 명명함Searializable직렬화할 수 있는Cloneable복제할 수 있는…상위 클래스와 인터페이스 특성상위 클래스하위 클래스에 특성(속성 + 메서드) 을 상속해준다인터..
public class Penguin extends Animal{ public String habitat; public void showHabitat() { System.out.printf("%s는 %s에 살아\n", name, habitat); } }public class Animal { public String name; public void showName() { System.out.println("안녕 나는 " + name + "야. 반가워."); } }실행 코드public class Driver { public static void main(String[] args) { Penguin pororo = new Penguin(); pororo.name = "뽀로로"; pororo.habitat = ..
오버라이딩과 오버로딩오버라이딩(Overriding)정의서브 클래스가 슈퍼 클래스의 메서드를 재정의하는 것임.특징같은 메서드 이름을 가지면서, 슈퍼 클래스의 메서드의 구현을 서브 클래스에서 변경하여 사용합니다.예시슈퍼 클래스에printMessage() 메서드가 “hello” 를 출력한다면서브 클래스에서오버라이딩하여printMesssage() 메서드의 출력 문구를 변경하여 사용가능 ( 중괄호 안의 구현을 새롭게 가능 )오버로딩정의하나의 클래스에서 같은 이름의 메서드를 여러 개 정의하는 것을 의미특징메서드의 이름은 동일매개변수의 타입, 개수, 순서가 다를 수 있음.예시printMessage() 메서드를 오버로딩하여 하나는 인자 없이, 또 다른 하나는 문자열 인자를 받아 출력하도록 정의가능오버라이딩과 오버로딩의..
OOP 관련 다른 서적들을 보면 상속은 is a 관계라고들 말한다.하지만 위의 단순한 설명만으로는 무리가 있다.상속과 is a 관계펭귄 is a 동물 주어 is a 보어주어는 하위 클래스 , 보어는 상위 클래스라고들 흔히 생각하지만,하위 클래스는 하나의 상위 클래스다 라는 논리가 성립하기가 힘듬.is a 가 클래스와 인스턴스is a 관계는 객체(클래스와 인스턴스) 와 클래스 의 관계로 자주 오해된다.객체 is a 클래스 ← 이게 말이 안된다.명확한 표현법상속 관계를 표현시에, is a 대신 is a kind of 를 사용하는 것이 더 명확한 표현이다.펭귄 is a kind of 동물 이라고 흔히들 표현된다!명확한 예시펭귄 is a kind of 동물 : 펭귄은 동물의 한 분류이다.고래 is a kind ..
클래스와 객체의 구분생물에게는 나이가 어떻게 되나요무생물에게는 제조일자가 어떻게 되나요?위 2가지 질문으로 클래스와 객체를 구분할수 있다는데..객체와 클래스 차이객체실제로 존재하는 유일무이한 실체특정한 속성에 값을 가지고 있음.클래스개념적인 분류 체계속성 자체에는 값을 가질 수 없다.예외 상황하지만..제리의 꼬리가 몇개?1개쥐의 꼬리는 몇개?1개미키마우스의 꼬리는 몇개?1개모두 답이 한 개이다.제리 와 미키마우스 는 객체이기에 꼬리 개수에 답이 존재하는 것이 당연하지만..쥐 는 클래스 인데도 꼬리 개수에 대한 답이 존재한다.이는 꼬리 개수가 객체의 속성이지만, 모든 객체가 동일한 값을 가지는 경우, 클래스에서도 해당 값을 알 수 있게 되기 때문이다. 그렇다면, 객체마다 모두 같은 값을 가진다고 확신한 순..