본문 바로가기
728x90
반응형
SMALL

공부60

[JAVA] 자바 - 다형성을 활용한 멤버쉽 프로그램 확장 일반 고객과 VIP 고객 중간 멤버쉽 만들기 고객이 늘어 일반 고객보다는 많이 구매하고 VIP보다는 적게 구매하는 고객에게도 혜택을 주는 경우 GOLD 고객 등급을 만들고 혜택은 다음과 같습니다. 1. 제품을 살때는 10%를 할인해줍니다. 2. 보너스 포인트는 2%를 적립해줍니다. GoldCustomer.java public class GoldCustomer extends Customer { double salesRatio; public GoldCustomer(int customerID, String customerName) { super(customerID, customerName); salesRatio = 0.1; bonusRatio = 0.02; customerGrade = "Gold"; } @Ov.. 2021. 11. 30.
[JAVA] 자바 - 메서드 재정의와 가상 메서드 원리 메서드가 어떻게 호출되고 실행되는가? 메서드의 이름은 주소 값을 나타냅니다. 메서드는 명령어의 set이고 프로그램이 로드되면 메서드 영역(코드 영역)에 명령어 set이 위치합니다. 해당 메서드가 호출되면 명령어 set이 있는 주소를 찾아 명령어가 실행됩니다. 이때 메서드에서 사용하는 변수들은 스택 메모리에 위치하게 됩니다. 따라서 다른 인스턴스라도 같은 메서드의 코드는 같으므로 같은 메서드가 호출됩니다.(다만 변수 값은 다릅니다.) 인스턴스가 생성되면 변수는 힙 메모리에 따로 생성되지만 메서드 명령어 set은 처음 한 번만 로드됩니다. public class TestMethod { int num; void aaa() { System.out.println("aaa() 호출"); } public static.. 2021. 11. 30.
[JAVA] 자바 - 메서드 재정의 하기(Overriding) 하위 클래스에서 메서드 재정의 하기 오버 라이딩 : 상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현한 내용과 맞지 않는 경우 하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있습니다. VIPCustomer 클래스의 calcPrice()는 할인율이 적용되지 않았습니다. 재정의하여 구현해야 합니다. VIPCustomer.java @Override public int calcPrice(int price) { // Override된 메서드이기 때문에 이름이 바뀌면 error bonusPoint += price * bonusRatio; return price - (int)(price * salesRatio); } @overriding 애노테이션(annotation) 애노테이션은 원래 주석이라.. 2021. 11. 30.
[JAVA] 자바 - 상속에서 클래스 생성과정과 형 변환 하위 클래스가 생성되는 과정 하위 클래스를 생성하면 상위 클래스가 먼저 생성됩니다. new VIPCustomer()를 호출하면 Customer()가 먼저 호출됩니다. 클래스가 상속받은 경우 하위 클래스의 생성자에서는 반드시 상위 클래스의 생성자를 호출합니다. Customer.java public Customer() { customerGrade = "SILVER"; bonusRatio = 0.01; System.out.println("Customer() 생성자 호출"); } VIPCustomer.java public VIPCustomer() { bonusRatio = 0.05; salesRatio = 0.1; customerGrade = "VIP"; System.out.println("VIPCustomer.. 2021. 11. 30.
[JAVA] 자바 - 상속을 활용한 멤버쉽 클래스 구현하기 멤버쉽 시나리오 회사에서 고객 정보를 활용한 맞춤 서비스를 하기 위해 일반 고객과 이보다 충성도가 높은 우수고객에 따른 서비스를 제공하고자 합니다. 물품을 구매할 때 적용되는 할인율과 적립되는 보너스 포인트의 비율이 다릅니다. 여러 멤버쉽에 대한 각각 다양한 서비스를 제공할 수 있습니다. 멤버쉽에 대한 구현을 클래스 상속을 활용하여 구현합니다. 일반 고객 클래스 구현 고객의 속성 : 고객 아이디, 이름, 등급, 보너스 포인트, 보너스 포인트 적립비율 일반 고객의 경우 물품 구매시 1%의 보너스 포인트 적립 public class Customer { private int customerID; private String customerName; private String customerGrade; int b.. 2021. 11. 30.
[JAVA] 자바 - 객체 간의 상속의 의미 클래스 상속 새로운 클래스를 정의할 때 이미 구현된 클래스를 상속받아서 속성이나 기능을 확장하여 클래스를 구현합니다. 이미 구현된 클래스보다 더 구체적인 기능을 가진 클래스를 구현해야 할 때 기존 클래스를 상속합니다. 상속하는 클래스 : 상위 클래스, parent class, base class, super class 상속받는 클래스 : 하위 클래스, child class, derived class, sub class 상속의 문법 class B extends A { ... } extends 키워드 뒤에는 단 하나의 클래스만 올 수 있습니다. C++ 같은 경우는 여러 개가 올 수 있는데 이러면 모호성이 발생할 수 있기 때문에 자바는 단일 상속(single inheritance)만을 지원합니다. 상속을 구현.. 2021. 11. 27.
[JAVA] 자바 - 객체 배열을 구현한 클래스 ArrayList java.util 패키지에서 제공되는 ArrayList 기존의 배열 선언과 사용 방식은 배열의 길이를 정하고 요소의 개수가 배열의 길이보다 커지면 배열을 재할당하고 복사해야 했습니다. 배열의 요소를 추가하거나 삭제하면 다른 요소들의 이동에 대한 구현을 해야 했습니다. ArrayList는 객체 배열을 좀 더 효율적으로 관리하기 위해 자바에서 제공해주는 클래스입니다. 이미 많은 메서드들이 최적의 알고리즘으로 구현되어 있어 각 메서드의 사용방법만 익히면 유용하게 사용할 수 있습니다. ArrayList의 주요 메서드 메서드 설명 boolean add(E e) 요소 하나를 배열에 추가. E는 요소의 자료형을 의미 int size() 배열에 추가된 요소 전체 개수를 반환 E get(int index) 배열의 ind.. 2021. 11. 25.
[JAVA] 자바 - 2차원 배열 사용하기 다차원 배열 2차원 이상으로 구현된 배열입니다. 평면(2차원 배열)이나 공간(3차원 배열)을 활용한 프로그램을 구현합니다. int[][] arr = new int[2][3]; int[][] arr = {{1, 2, 3}, {4, 5, 6}}; 2차원 배열 예제 TwoDimenstionTest.java public class TwoDimenstionTest { public static void main(String[] args) { //int[][] arr = {{1, 2, 3}, {1, 2, 3, 4}}; //int[][] arr = new int[3][4]; for(int i = 0; i < arr.length; i++) { for(int j = 0; j < arr[i].length; j++) { Sy.. 2021. 11. 25.
[JAVA] 자바 - 객체 배열 사용하기 객체 배열 선언과 구현 기본 자료형 배열은 선언과 동시에 배열의 크기만큼 메모리가 할당되지만, 객체 배열의 경우에는 요소가 되는 객체의 주소가 들어갈(4바이트, 8바이트) 메모리만 할당되고(null) 각 요소 객체는 생성하여 저장해야 합니다. Book.java public class Book { private String title; private String author; public Book() { } public Book(String title, String author) { // 초기화 작업 this.title = title; this.author = author; } public String getTitle() { return title; } public void setTitle(String t.. 2021. 11. 25.
728x90
반응형
LIST