상속이란 다른 클래스가 가지고있는 정보를 자신이 포함하겠다는 의미로
자식 클래스가 부모클래스의 변수나, 함수같은 인스턴스를 정의해주지 않아도 사용할 수 있는 문법이다.
가령, Person이라는 부모 클래스가 student클래스랑 teacher이라는 자식 클래스들로 나뉠 수 있다.
클래스의 인스턴스를 선언할때 보안상의 문제때문에 앞에서
private로 변수를 선언 해준 후 public get, set함수 선언을 해준다했는데 이게
JAVA의 거의 표준이기때문에 자동완성도 지원한다
변수를 private로 만든다음에
코드창에 마우스 우클릭 -> Source -> Generate Getters and Setters 를 입력하면
변수별로 각각 get함수와 set함수가 만들어진다
생성자 또한 자동완성이 있는데 생성자는 각 인스턴스를 만들때 값을 자동으로 초기화 해주는 변수라고 했었다.
마우스 우클릭 -> Source -> Generate cunstructor and using Field
Person이라는 클래스를 만들어주고 name, age, height, weight라는 4개의 변수를 만들어준다
또, 위에서 말한 단축키로 get, set 함수들과 생성자 또한 만들어준다
이제 Student라는 클래스가 Person클래스를 상속받아보겠다
상속을 받을때는 위와같이 extends 키워드 다음에 부모 클래스명을 쓴다
보면 Student 클래스는 name, age, height, weight 같은 변수는 선언해준적이 없는데
상속을 받았으므로 자동으로 생성자에 매개변수로 넣어져서 만들면 자동으로 초기화가 되고 쓸 수 있다.
super()라는 함수는 자신의 부모가 가지고 있는 생성자를 실행하겠다는 소리이다.
간단한 예제를 위해 show()라는 함수를 만들었다
Student 클래스 내에서 getName부터 getGPA까지 만들어준다
그리고 Main 클래스에 main함수를 만들어
Student클래스의 student라는 인스턴스를 만들고 Student클래스의 생산자에 각각 인자를 넣는다.
인스턴스명.함수명()을 해서 show함수를 출력하면 이렇게 나온다
보는대로 main함수는 엄청 짧고 간단해졌고 Class별로 나눠서 정리를 해놨기때문에 보기 편하다
이게 객체 지향 프로그래밍 언어의 기본이자 장점이다.
추상(Abstract) (0) | 2020.10.06 |
---|---|
상속에 대해서2 (0) | 2020.10.06 |
하나의 점을 의미하는 Node 클래스 (객체 지향 클래스의 기본적인 형태) (0) | 2020.10.06 |
2차원 배열로 10x10 정수 랜덤 데이터를 생성하여 전체 데이터를 분석합니다. (0) | 2020.10.06 |
random함수를 이용한 100개의 랜덤 정수의 평균을 구하는 프로그램 (0) | 2020.10.06 |