상속3 다형성의 활용 (오버라이딩) 게임에서 각 캐릭터가 각자 주어진 무기를 들고 발사하는 프로그램을 만든다고 가정해 보겠습니다. 절차지향언어인 C언어에서는 각 캐릭터(변수)에 맞춰서 무기를 발사(함수)하도록 합니다. 하지만 객체지향언어인 Java에서는 각 캐릭터마다 자신의 무기를 이미 가지고 있고(클래스), 어떻게 발사해야할지(메소드)도 미리 알고 있습니다. 따라서 C언어에서는 캐릭터를 먼저 소환한 후 무기 발사를 명령해야하지만(절차대로) Java에서는 무기를 발사한다라는 명령을 내려두고 캐릭터를 소환합니다. 그럼 그 캐릭터가 알아서 자신의 무기를 발사하게 됩니다. 그래서 객체지향언어인 것이죠. 이렇게 미리 명령을 내려 두고 캐릭터를 소환해주기 위해 사용하는 방식이 다형성의 성질 중 하나인 오버라이딩입니다. 먼저 위의 예시를 구현하기.. ▸JAVA/기본 문법 2019. 12. 10. 클래스 상속 (extends) 상속을 사용할 때는 접근 제한자(캡슐화)에 대한 부분만 머릿속에서 잘 그리면 사용이 그리 어렵진 않습니다. 기본적으로 Java에서는 다중 상속을 허용하지 않고 있기 때문에 부모 클래스와 자식 클래스의 관계가 명확합니다. 프로그램이 커질 수록 객체 간 상관관계를 구조도로 그려두는 것이 좋겠네요. 일단 클래스 생성 시 필드는 private으로 생성하는 것이 좋습니다. 자식 클래스 또는 다른 클래스에서 데이터에 직접 접근하는 것을 방지하기 위함 입니다. 그리고 해당 데이터에 접근할 수 있는 함수를 추가로 만들어두는데, 값을 가져오는 것을 "getter", 값을 변경하는 것을 "setter"라고 부릅니다. 거의 필수적인 구조라 이클립스에서는 아예 해당 함수를 자동 생성해주는 기능이 있습니다. package st.. ▸JAVA/기본 문법 2019. 12. 10. 객체지향 언어의 특징(상속) [3/4] 3. 상속 재사용성을 극대화시키기 위한 장치 부모 클래스의 속성을 그대로 물려받음 (물론 설정에 따라 완전히 같지 않을 수 있음) 상속의 개념은 매우 쉽습니다. 자식 클래스는 부모 클래스의 속성을 물려받도록 한다는 것이죠. C언에는 상속이라는 개념이 없습니다. 그냥 기존 함수 코드를 복사해서 붙여놓고 그 아래에 더 필요한 부분을 추가해줘야 합니다. 한 두개 정도라면 별 무리가 없지만 만약 100개의 함수에 공통된 부분이 10줄 존재한다면 코드 중복이 1000줄 발생하는 문제점이 생기죠. Java에서는 상속이라는 기능을 이용해서 위 과정을 매우 직관적이고 간단하게 만들어 줬습니다. 이미 만들어둔 코드의 재활용성을 극대화시키고 거기에 코드가 간결해지는 효과도 낼 수 있습니다. 오버라이딩 같은 기능과 함께.. ▸JAVA/기본 상식 2019. 12. 9. 이전 1 다음 💲 추천 글 반응형