Burninghering's Blog
article thumbnail
3-6.객체 지향 핵심 - 다형성
JAVA 2022. 1. 17. 03:53

다형성과 다형성을 사용하는 이유 1. 다형성(polymorphism) 이란? 하나의 코드가 여러 자료형으로 구현되어 실행되는 것 같은 코드에서 여러 다른 실행 결과가 나오는 것 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나! 다형성을 잘 활용하면 유연하고/확장성있고/유지보수가 편리한 프로그램을 만들수 있음 package ch06; class Animal{ public void move() { System.out.println("동물이 움직입니다."); } } class Human extends Animal{ @Override public void move() { System.out.println("사람이 두 발로 걷습니다."); } public void readBook() { Sy..

article thumbnail
3-5.객체 지향 핵심 - 메서드 재정의와 가상 메서드 원리
JAVA 2022. 1. 16. 03:11

1. 메서드는 어떻게 호출되고 실행 되는가? 메서드(함수)의 이름은 주소값을 나타냄 메서드는 명령어의 set 이고 프로그램이 로드되면 메서드 영역(코드 영역)에 명령어 set이 위치 해당 메서드가 호출 되면 명령어 set 이 있는 주소를 찾아 명령어가 실행됨 이때 메서드에서 사용하는 변수들은 스택 메모리(데이터 영역)에 위치 하게됨 따라서 다른 인스턴스라도, 같은 메서드의 코드는 같으므로 같은 메서드가 호출된다! 인스턴스가 생성되면 변수는 힙 메모리에 따로 생성되지만, 메서드 명령어 set은 처음 한번만 로드 됨 public class TestMethod { int num; void aaa() { System.out.println("aaa() 호출"); } public static void main(St..

article thumbnail
3-4.객체 지향 핵심 - 메서드 재정의(overriding, 오버라이딩)
JAVA 2022. 1. 15. 01:28

1. 하위 클래스에서 메서드 재정의 하기 오버라이딩(overriding) : 상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과 맞지 않는 경우, 하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있음 이전 챕터에서, VIPCustomer 클래스의 calcPrice()는 할인율이 적용되지 않음 -> 재정의 하여 구현해야 함 메소드의 정의 부분이 정확히 똑같아야 함! VIPCustomer.java package ch04; public class VIPcustomer extends Customer { double salesRatio; String agentID; // super를 이용하여 상위 클래스의 생성자 명시적으로 호출 public VIPcustomer(int customerI..

article thumbnail
3-3.객체 지향 핵심 - 상속에서 클래스 생성 과정과 형 변환
JAVA 2022. 1. 15. 00:56

1. 하위 클래스가 생성 되는 과정 하위 클래스를 생성하면 상위 클래스가 먼저 생성 됨 new VIPCustomer()를 호출하면 Customer()가 먼저 호출 됨 클래스가 상속 받은 경우 하위 클래스의 생성자에서는 반드시 상위 클래스의 생성자를 호출 함 Customer.java public Customer() { customerGrade="SILVER"; bonusRatio=0.01; System.out.println("Customer() call"); } VIPcustomer.java public VIPcustomer() { bonusRatio=0.05; salesRatio=0.1; customerGrade="VIP"; System.out.println("VIPcustomer() call"); } ..

article thumbnail
3-2.객체 지향 핵심 - 상속을 활용한 멤버십 클래스 구현
JAVA 2022. 1. 14. 21:05

1. 멤버십 시나리오 회사에서 고객 정보를 활용한 맞춤 서비스를 하기 위해 일반고객(Customer)과 이보다 충성도가 높은 우수고객(VIPCustomer)에 따른 서비스를 제공하고자 함 물품을 구매 할때 적용되는 할인율과 적립되는 보너스 포인트의 비율이 다름 여러 멤버십에 대한 각각 다양한 서비스를 제공할 수 있음 멤버십에 대한 구현을 클래스 상속을 활용하여 구현해보기 2. 일반 고객(Customer) 클래스 구현 고객의 속성 : 고객 아이디, 고객 이름, 고객 등급, 보너스 포인트, 보너스 포인트 적립비율 일반 고객의 경우 물품 구매시 1%의 보너스 포인트 적립 package ch02; public class Customer { protected int customerID; protected Stri..

article thumbnail
3-1.객체 지향 핵심 - 객체 간의 상속
JAVA 2022. 1. 13. 22:01

객체 간의 상속은 어떤 의미일까? 1. 클래스 상속 새로운 클래스를 정의 할 때 이미 구현된 클래스를 상속(inheritance) 받아서 속성이나 기능을 확장하여 클래스를 구현함 이미 구현된 클래스보다 더 구체적인 기능을 가진 클래스를 구현해야 할때 기존 클래스를 상속함 상속하는 클래스 : 상위 클래스, parent class, base class, super class 상속받는 클래스 : 하위 클래스, child class, derived class, subclass 상속의 문법 class B extends A{ } extends 키워드 뒤에는 단 하나의 클래스만 올 수 있다. (자바는 단일 상속(single inheritance)만을 지원) 2. 상속을 구현 하는 경우 상위 클래스는 하위 클래스 보다..

2-19.객체 지향 - ArrayList를 활용한 간단한 성적 산출 프로그램
JAVA 2022. 1. 12. 23:56

1. 예제 시나리오 1001학번 Lee와 1002학번 Kim, 두 학생이 있습니다. Lee 학생은 국어와 수학 2과목을 수강했고, Kim 학생은 국어, 수학, 영어 3 과목을 수강하였습니다. Lee 학생은 국어 100점, 수학 50점입니다. Kim 학생은 국어 70점, 수학 85점, 영어 100점입니다. Student와 Subject 클래스를 만들고 ArrayList를 활용하여 두 학생의 과목 성적과 총점을 출력하세요 StudentTest.java package ch24; public class StudentTest { public static void main(String[] args) { Student studentLee = new Student(1001, "Lee"); studentLee.addSu..

article thumbnail
2-18.객체 지향 - 객체 배열 클래스 ArrayList
JAVA 2022. 1. 12. 13:41

객체 배열을 구현한 클래스 ArrayList 1. java.util 패키지에서 제공되는 ArrayList 기존의 배열 선언과 사용 방식은 배열의 길이를 정하고, 요소의 개수가 배열의 길이보다 커지면, 배열을 재할당하고 복사해야 했었다. 배열의 요소를 추가하거나 삭제하면 다른 요소들의 이동에 대한 구현을 해야 함 ArrayList는 객체 배열을 좀더 효율적으로 관리하기 위해 자바에서 제공해 주는 클래스 이미 많은 메서드들이 최적의 알고리즘으로 구현되어 있어 각 메서드의 사용 방법만 익히면 유용하게 사용 가능! 2. ArrayList의 주요 메서드 3. ArrayList를 활용한 간단한 예제 package ch23; import java.util.ArrayList; import ch21.Book; publi..