본문 바로가기

개발/Java64

[3주차] Java 중급 - 상속은 언제 사용할까 코드의 재사용과 관련해서 2가지 방법을 사용할 수 있다. IS-A 관계 (is a relationship : inheritance) 일반적인 (general) 개념과 구체적인 (specific) 개념과의 관계 상위 클래스 : 하위 클래스보다 일반적인 개념 (예 : Employee) 하위 클래스 : 상위 클래스보다 구체적인 개념들이 더해짐 (예 : Engineer, Manager … ) 상속은 클래스간의 결합도가 높은 설계 상위 클래스의 수정이 많은 하위 클래스에 영향을 미칠 수 있음 계층 구조가 복잡하거나 hierarchy가 높으면 좋지 않음 (상속의 depth가 깊은 경우) HAS-A 관계 (composition) 클래스가 다른 클래스를 포함하는 관계 (변수로 선언) 코드 재사용의 가장 일반적인 방법 .. 2023. 6. 25.
[3주차] Java 중급 - 다형성과 다형성을 사용하는 이유 다형성(polymorphism)이란? 하나의 코드가 여러 자료형으로 구현되어 실행되는 것 같은 코드에서 여러 다른 실행 결과가 나옴 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나임 다형성을 잘 활용하면 유연하고 확장성있고, 유지보수가 편리한 프로그램을 만들 수 있음 다형성의 예 package ch03; import java.util.ArrayList; class Animal{ public void move() { System.out.println("동물이 움직입니다."); } public void eating() { } } class Human extends Animal{ public void move() { System.out.println("사람이 두발로 걷습니다."); } p.. 2023. 6. 25.
[3주차] Java 중급 - 메서드 재정의와 가상 메서드 원리 메서드는 어떻게 호출되고 실행 되는가? 메서드(함수)의 이름은 주소값을 나타냄 (그럼에도 overloading이 가능한 이유는 dummy parameter를 붙여서 이름을 조금씩 변형시켜서 가능하게 한다. 사실상 같은 이름의 함수는 없음) 메서드는 명령어의 set이고 프로그램이 로드되면 메서드 영역(코드 영역)에 명령어 set이 위치 해당 메서드가 호출되면 명령어 set이 있는 주소를 찾아 명령어가 실행됨 (함수가 호출되는 것은 instruction set 부분이 호출되는 것임) 이때 메서드에서 사용되는 변수들은 스택 메모리에 위치 하게됨 따라서 다른 인스턴스라도 같은 메서드의 코드는 같으므로 같은 메서드가 호출됨 인스턴스가 생성되면 변수는 힙 메모리에 따로 생성되지만, 메서드 명령어 set은 처음 한번.. 2023. 6. 25.
[3주차 Java 중급] - 메서드 재정의 하기(overriding) 하위 클래스에서 메서드 재정의 하기 오버라이딩(overriding) : 상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과 맞지 않는 경우 하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있음 (상위 클래스의 정의 구현 부분이 동일해야함. 예를 들면, 함수 이름, 파라미터, 리턴값 같은 것들...) VIPCustomer 클래스의 calcPrice()는 할인율이 적용되지 않음 재정의 하여 구현해야 함 VIPCustomer.java @Override public int calcPrice(int price) { bonusPoint += price*bonusRatio; return price - (int)(price * salesRatio); } @Overriding 애노테이션(ann.. 2023. 6. 25.