분류 전체보기211 [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. [3주차] Java 중급 - 상속에서 클래스 생성 과정과 형 변환 하위 클래스가 생성되는 과정 하위 클래스를 생성하면 상위 클래스가 먼저 생성됨 new VIPCustomer()를 호출하면 Customer() 가 먼저 호출됨 (상위 클래스가 먼저 호출됨) 클래스가 상속 받은 경우 하위 클래스의 생성자에서는 반드시 상위 클래스의 생성자를 호출함 Customer.java public Customer() { // 생성자 (일반 고객) customerGrade = "SILVER"; bonusRatio = 0.01; System.out.println("Customer() 생성자 호출"); // 생성자 안에 작성 } VIPCustomer.java public VIPCustomer() { customerGrade = "VIP"; // 오류 발생 상속받은 Customer에서 custo.. 2023. 6. 24. [3주차] Java 중급 - 상속을 활용한 멤버십 클래스 구현하기 멤버십 시나리오 회사에서 고객 정보를 활용한 맞춤 서비스를 하기 위해 일반 고객(Customer)과 이보다 충성도가 높은 우수 고객(VIPCustomer)에 따른 서비스를 제공하고자 함 물품을 구매할 때 적용되는 할인율과 적립되는 보너스 포인트의 비율이 다름 여러 멤버십에 대한 각각 다양한 서비스를 제공할 수 있음 멤버십에 대한 구현을 클래스 상속을 활용하여 구현해보기 일반 고객(Customer) 클래스 구현 고객의 속성 : 고객 아이디, 고객 이름, 고객 등급, 보너스 포인트, 보너스 포인트 적립비율 일반 고객의 경우 물품 구매 시 1%의 보너스 포인트 적립 package ch03; public class Customer { private int customerID; //고객의 아이디는 중요 정보이기 .. 2023. 6. 24. 이전 1 ··· 27 28 29 30 31 32 33 ··· 53 다음