728x90
반응형
SMALL

공부 62

[JAVA] 자바 - 메서드 재정의와 가상 메서드 원리

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

Java 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) 애노테이션은 원래 주석이라..

Java 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..

Java 2021.11.30

[JAVA] 자바 - 상속을 활용한 멤버쉽 클래스 구현하기

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

Java 2021.11.30

[JAVA] 자바 - 객체 배열을 구현한 클래스 ArrayList

java.util 패키지에서 제공되는 ArrayList 기존의 배열 선언과 사용 방식은 배열의 길이를 정하고 요소의 개수가 배열의 길이보다 커지면 배열을 재할당하고 복사해야 했습니다. 배열의 요소를 추가하거나 삭제하면 다른 요소들의 이동에 대한 구현을 해야 했습니다. ArrayList는 객체 배열을 좀 더 효율적으로 관리하기 위해 자바에서 제공해주는 클래스입니다. 이미 많은 메서드들이 최적의 알고리즘으로 구현되어 있어 각 메서드의 사용방법만 익히면 유용하게 사용할 수 있습니다. ArrayList의 주요 메서드 메서드 설명 boolean add(E e) 요소 하나를 배열에 추가. E는 요소의 자료형을 의미 int size() 배열에 추가된 요소 전체 개수를 반환 E get(int index) 배열의 ind..

Java 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..

Java 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..

Java 2021.11.25

[JAVA] 자바 - 배열 (자료를 순차적으로 한꺼번에 관리하는 방법)

배열이란? 동일한 자료형의 순차적 자료 구조이고 유한 집합으로 정의할 수 있습니다. 배열은 같은 종류의 데이터를 많이 다뤄야 하는 경우에 사용할 수 있는 가장 기본적인 자료 구조입니다. 배열을 구성하는 각각의 값을 배열 요소(element)라고 합니다. 배열에서의 위치를 가리키는 숫자를 인덱스(index)라고 합니다. 인덱스 연산자[]를 사용하여 빠른 참조가 가능합니다. 물리적 위치와 논리적 위치가 동일합니다. 배열의 순서는 0부터 시작합니다. 자바에서는 객체 배열을 구현한 ArrayList를 많이 활용합니다. 배열은 선언되는 형식에 따라 1차원 배열, 2차원 배열뿐만 아니라 그 이상의 다차원 배열로도 선언할 수 있습니다. 1차원 배열 배열 선언 - 2가지 방법이 있습니다. int[] arr1 = new..

Java 2021.11.24

[JAVA] 자바 - static 응용 - 싱글톤 패턴

싱글톤 패턴이란? 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴입니다. static 변수, 메서드를 활용하여 구현 할 수 있습니다. 싱글톤 패턴으로 회사 객체 구현하기 생성자는 private로 선언합니다. Company.java public class Company { private static Company instance = new Company(); private Company() { } // static으로 선언해야지 외부에서 클래스 이름으로 호출할 수 있다 public static Company getInstance() { if (instance == null) { instance = new Company(); } return instance; } } Compan..

Java 2021.11.23

[JAVA] 자바 - static 메서드의 구현과 활용, 변수의 유효 범위

static메서드 만들기 변수를 private으로 선언하고 getter/setter 구현합니다. getter / setter는 이클립스에서 코드에 마우스 우클릭을 하고 Source -> Generate Getter and Setters... 를 클릭하면 생성할 수 있습니다. Employee.java public class Employee { private static int serialNum = 1000; private int employeeId; private String employeeName; private String department; // 객체가 생성될 때 초기화 작업은 생성자에서 해준다 public Employee() { serialNum++; // 이 변수는 공유x. // 이 변수를 바로..

Java 2021.11.23
728x90
반응형
LIST