VIII. Java Basic

Gunju Kim·2024년 9월 2일
post-thumbnail

상속 (Inheritance)

  • 자바에는 상속이라는 개념이 존재한다. 상속은 상위 클래스가 하위 클래스에게 자신이 가지고 있는 메소드 명령 혹은 객체들을 물려주어서 하위 클래스가 따로 메소드나 객체를 일일히 입력하지 않아도 동일한 메소드 명령을 수행하고 또 상속을 줌으로써 같은 변수에 담아지게 만든다.
  • 부모(상위 클래스)가 자식에게 자신의 면모를 물려주듯이 부모는 물려줄수 있지만 자식이 부모에게 무엇인가를 물려줄수 없듯이 자식(하위 클래스)는 상속을 줄수 없다.

alt text

  • 위는 상속의 예시를 든 코드이다. 개와 고양이는 둘다 동물이라는 카테고리에 속한다 그래서 둘의 공통점인 Animal 이라는 큰 클래스를 하나 더 만들어서 Animal 클래스를 상위 클래스로 지정을 하고 Dog 와 Cat의 클래스를 만들때 extends Animal 을 붙여넣어 Animal 클래스의 하위 클래스로써 자바가 인식하게 만드는 작업이다.

  • 상위 클래스로부터 지정 받아 상속을 받게 되면 하위 클래스는 상위 클래스에서 지정된 명령어를 실행할수 있고 자신이 가진 기능을 물려줄수 있다고 표현 할수 있겠다.

  • 프로그램의 태생에선 중복은 반드시 기피해야될 요소중 하나이다. 그 중복을 기피하기 위해서는 여러가지 해결법이 있는데 그중 하나가 상속이라는 개념이다. 그리고 상속은 생성자가 사라진 객체를 자바가 어떻게 해석해야 되는지 힌트를 알려주는 용도이다.

구성 (Composition)

alt text

  • 이번 개념은 구성(Composition)이라는 개념이다. 구성은 상속과는 다르게 클래스와 클래스를 연결고리를 만들어주는 개념이다. 상속은 extends 라는 명령어를 붙여서 하위 클래스라는 느낌으로 기능을 물려주는 방식이라면 구성은 클래스와 클래스 사이에 부모 자식 간의 관계로 묶이는 느낌이 아닌 수평적인 느낌으로 묶인다고 생각하면 되겠다. Gildong 이라는 클래스에서 실행이 가능한 메소드는 java 라는 메소드이고 Gilsoon 이라는 클래스에서 실행이 가능한 메소드는 python 이라는 메소드 밖에 없다. 하지만 여기에서는 구성을 이용해서 Gilsoon 이라는 클래스에서도 java 메소드를 실행시킬수 있다.

  • Gilsoon 클래스에 java 메소드를 생성을 하고 Gilsoon 클래스 안에 Gildong 이라는 클래스를 불러와서 객체로 생성을 해주고 생성된 java 메소드 안에서 Gildong 도 java 메소드가 실행이 가능하니 Gildong 이가 java를 실행해주면 된다. 이런 방법을 통해서 서로 존재하지 않는 메소드를 교차로 실행시키는 것도 가능하다.

형변환 (Casting)

alt text

  • 형변환에 대해서 알아보자. 하지만 그전에 한가지 알아야 할 것이 있다.

1. 자바의 대전제

자바의 대전제는 자료형(타입)이 같은 것만 변수에 저장해준다.

int num = 10;
double num2 = 10.1;
이렇게 정수는 정수만 담아주고 실수는 실수만 담아준다. 이것이 자바가 코드의 변수를 해석하고 저장하고 연산해주는 방식이다.

  • 위의 대전제를 알게 되었으면 이제 형변환에 대해서 알아보자. 형변환은 자바가 지정해주는 자료형(타입)의 변환을 의미한다. 형변환의 형태에서는 전체적으로 두가지가 있다고 볼수 있는데 하나는 자동형변환 또 하나는 수동형변환이다.

자동형변환

자동형변환은 자바 시스템내에서 자바가 자체적으로 이건 연산 및 대입이 안전하다고 판단되는 것에 한하여 자바가 직접 변환해준다. 예를 들면 정수를 실수의 모습으로 바꿔서 형변환을 이루는 것이나. 상위 클래스가 하위 클래스의 모습으로 형변환을 하는 것이 그 예다. 실제로 자바 내에서 그 명령어를 적용을 해도 에러가 뜨지 않고 직접 형변환 가능하다고 표시를 해준다.

수동형변환

수동형변환은 자바 시스템내에서 자바가 자체적으로 안전하지 않다고 판단되는 연산 및 대입을 말한다. 실수를 정수로 바꾼다고 가정해보자, 10.3 -> 10으로 바꾸게 되면 뒤의 .3 이라는 데이터는 결국 유실이 되고 온전한 데이터가 입력 되지 않는다. 또 상위 클래스가 하위 클래스가 될수는 있지만 하위 클래스가 상위 클래스의 형태로 형변환이 되지 않는 것처럼 위험한 형변환은 자바에서 해주지 않기 때문에 개발자가 일일히 설정해서 형변환을 이루는 모든 것들을 말한다. 그래서 수동형변환이다.

profile
처음이라서 그래 가본적 없던 길에

0개의 댓글