상속 5

자바 26강. 컴포지션

상속을 사용하지 않고 객체를 사용하는 방법을 알아보자. package ex11; class 엔진 { int power = 5000; } class 소나타 extends 엔진 { } public class CompositeEx01 { public static void main(String[] args) { } } 소나타 클래스에서 power값을 쓰고 싶어서 엔진을 상속받았다. 문법적으로 틀린 건 없지만 다형성이 성립되지 않을 때 상속을 사용해선 안된다. 이때 데이터를 물려받는 것이 아닌, 재사용하는 방법이 있다. 다른 객체를 받아들여서 그 객체의 기능을 사용하는 것이다. 받아들인 객체의 자원(메서드, 변수)을 사용할 수 있다. 소나타 클래스는 엔진 클래스가 가진 power 변수를 사용하고 싶을 때, 엔진 ..

JAVA 2022.01.20

자바 25강. Super

자바에서는 super(키워드)가 부모, this가 자신을 뜻한다. this : 자기 자신의 heap 메모리 공간 클래스를 new 하기 전에 나중에 메모리에 뜰 heap 공간을 가리킨다는 말이다. 그럼 new를 하는 시점에 this는 메모리에 뜬 내 heap공간을 가리키게(바인딩) 된다. super : this와 마찬가지로 클래스를 new하기 전에 나중에 메모리에 뜰 부모의 heap 공간을 가리킨다는(바인딩) 말이다. + super는 extends를 했을 때만 사용이 가능하다. 자식을 new할때 상속되어있는 부모도 같이 메모리에 뜨고 부모의 생성자도 실행된다. 부모가 디폴트 생성자가 아닌 매개변수를 받는 생성자일 때 오류가 생긴다. 이때는 생성자 오버로딩을 해줘야 오류가 잡힌다. 실행하면 그냥 디폴트 생성..

JAVA 2022.01.20

자바 17강. 오버라이딩 ★

부모가 들고 있는 메서드를 자식이 똑같이 들고 있거나, 자식이 들고 있는 메서드를 부모가 똑같이 들고 있는, 똑같은 메서드를 자식도 들고 있고 부모도 들고 있으면 부모의 메서드가 오버라이드 된다. 무효화된다는 말이다. 부모가 가지고 있기 때문에 자식에게 양보하는 것이다. 즉, 메모리를 위에서 밑으로 타고 내려간 것이다. 변수는 자식이 똑같은 변수를 들고 있어도 양보하지 않고, 부모가 가지고 있는 변수를 실행한다. 메서드는 동일한 메서드를 부모와 자식이 가지고 있다는 조건을 지킨다면 부모의 메서드를 오버라이드(무효화)시킨다. 부모의 메서드를 통로로 이용하는 것이다. 통로로 이용하기 때문에 부모 클래스에는 아무런 내용이 필요 없다. 이런 클래스를 abstract 추상 클래스라고 한다. 다형성을 위해 만들어진..

JAVA 2022.01.17

자바 16강. 상속

상속은 물려받기 위해서 사용하는 것이 아닌 추상화하기 위해 사용하는것이다. 상속보다는 extends(확장)의 의미에 더 가깝다. 물려받는다는 말도 맞는 말이지만, 주된 목적은 그게 아닌 추상화인 것이다. 상속의 특징을 알아보자. 특징 1. 이미 존재하는 클래스로부터 멤버들을 물려받는 것이다. 상속을 받을 때는 클래스명 오른쪽에 "extends 상속받을 클래스 명"을 적어준다. package ex11; class 라면 { int kcal = 300; String color = "노란색"; String type = "국물"; } class 매운라면 extends 라면 { // int kcal = 300; // String color = "노란색"; // String type = "국물"; String typ..

JAVA 2022.01.14

자바 11강. 객체 지향 프로그래밍(OOP)

객체 지향 프로그래밍(Object-Oriented Programming; OOP) : 실제 세계가 객체(object)들로 구성되어 있는 것과 비슷하게 소프트웨어도 객체 단위로 작성하는 방법 실제 세계에 객체들은 사람, 동물, 건물, 자동차, 시계, 토스터, 세탁기 등의 많은 객체가 존재한다. 이 객체 지향 프로그래밍은 다양한 특징을 가진다. 영어를 예로 들어 보면 추상적인 단어와 물질적인 단어가 나누어져 있다. 추상적인 단어 : 존재하지 않는 것 물질적인 단어 : 존재하는 것(s) -> 셀 수 있는 명사 실제로 침대, 의자, 책상은 우리가 본 적이 있지만 '가구'를 본 적이 있을까? 이렇게 물리적인 침대, 의자, 책상을 하나로 두루뭉실하게 부르기 위해 물질적인 것들을 추상화 한 가구를 부모라고 한다. 또..

JAVA 2022.01.11