mjeongriver
article thumbnail
Published 2022. 10. 12. 18:45
day15-java TIL/Java

* 객체-getter, setter

 

 

* 다형성(Polymorphism)-다양한 형태의 성질

- 다형성이란 "객체가 여러 형태를 가진다"라는 의미로 해석되며, 하나의 객체가 여러가지 유형으로 사용되는 것을 의미합니다. (클래스의 형변환으로 생각하기)

- 다형성은 상속을 전제조건으로 합니다.

- 다형성을 위해 자바는 자식클래스가 부모클래스의 타입을 가질 수 있도록 허용합니다. 즉, 부모 타입에 모든 자식객체가 대입될 수 있습니다.

- 부모클래스 변수 = new 자식클래스() 이때. 부모클래스에 있는 기능만 사용할 수 있지만, 오버라이딩 된 메서드는 먼저 실행됩니다.

- 이 때, 부모에 있는 메서드만 실행가능 하며 overriding메서드는 우선 실행됩니다.

- 객체들의 타입을 통일하기 위해서 다형성이라는 형 변환을 사용합니다.

-object만 있으면 모든지 저장이 가능하지만, 꼭 필요할 때만 선언하도록 합니다.

- 자식이 부모처럼 실행 될 수 있고, 오버라이딩은 먼저 실행 됩니다.

 

* 강제 타입 변환(Type Casting)

- 강제 타입 변환은 부모 타입을 자식 타입으로 변환하는 것을 말합니다.

- 객체에서 타입 캐스팅을 사용하려면 우선 먼저 Promotion이 일어나야 합니다. 즉, 부모 타입으로 한번 형 변환이 된 자식 객체만 강제 타입 변환을 사용할 수 있습니다.

- Promotion이 일어나면 자식 클래스가 가지고 있는 재정의되지 않은 메서드를 사용할 수 없다는 단점이 있었습니다. 이 단점을 극복하기 위해 강제 타입 변환을 사용하여 자식 메서드를 호출하는 방법을 사용합니다.

 

* 매개 변수의 다형성

- promotion은 멤버 변수의 값을 대입할 때도 발생하지만, 메서드를 호출할 때 사용하는 매개 변 수에도 발생할 수 있습니다.

- 보통 메서드를 호출할 때는 메서드 선언부에서 지정한 데이터 타입과 일치하는 매개값을 전달하 여 호출하지만, 매개 변수에 다형성을 적용하면 자식 객체를 전달할 수도 있습니다.

- 매개변수에 객체를 전달하려면 타입을 클래스 타입을 적어주면 되는데 이 때 Person의 자식 클래스는 전부 전달 될 수 있습니다.

 

ex) int num = 1;

double d = num; → int < double이니까 자동 캐스팅 해줌.

double d = 3.14;

int num = (int) d; (캐스팅 필요)

 

Person이 부모, student가 자식일 때

Student s = new Student();

Person P = s;

→ Person p = new student(); = 위에랑 같은 식

 

<오늘 푼 문제들>

 

'TIL > Java' 카테고리의 다른 글

day17-java  (0) 2022.10.14
day16-java  (0) 2022.10.13
day14-java  (2) 2022.10.11
day13-java  (0) 2022.10.07
day12-java  (0) 2022.10.06
profile

mjeongriver

@mjeongriver

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그