Java 57

[김영한_자바기본][11. 다형성2] 다형성 사용 이유 및, 순수 추상 클래스(p.1-20)

1. 다형적 참조 / 메서드 오버라이딩을 통해 각자 다른 타입을 모두 동일화하여 중복을 제거할 수 있다. 2. 추상 클래스 : 상속을 목적으로 사용되고, 부모 클래스 역할을 담당, 인스턴스 존재X 3. 추상 메서드 : 반드시 오버라이딩 해야하는 메서드 4. 인터페이스 : 순수 추상클래스와 동일하며, 적절한 제약과 다중구현이 가능하다. 5. 인터페이스와 클래스가 같이사용될때, extends 후 implements를 사용해라 6. 추가적으로 객체를 생성하고 배열에 바로 담는 것은 가능 *다형성을 사용하는 이유 - 다향적 참조 / 메서드 오버라이딩을 통해 각자 다른 타입(클래스)를 모두 같은 타입화하여 중복을 제거할 수 있다. 1) 부모 클래스를 생성 방지 대비 - 추상 클래스 사용 2) 부모 클래스를 상속받..

[김영한_자바기본][10. 다형성1] 상속과 메모리 구조(p.1-23)

1. 자식 객체를 부모 참조 변수에 할당하면 부모 메서드에 접근이 가능하다. 2. 다운캐스팅은 '일시적으로' 부모 타입의 참조 변수를 자식 타입으로 형변환하는 것이다. 3. 다운 캐스팅 수행 전 instanceof로 원하는 타입 변경 확인 후 진행이 안전하다. 4. 주의할점은 멤버 변수는 오버라이딩 되지 않고, 메서드는 오버라이딩 된다는 것이다. *다형성을 이해하기 위해서는 '다형적 참조'와 '메서드 오버라이딩'에 대한 이해가 선행되어야 한다. 다형성이란 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 의미한다. 즉 다형성을 사용하면 하나의 객체가 다른 타입을 사용할 수 있다는 뜻이다. 1. 다형적 참조 [p.3 / polyMain_핵심] 자식 객체를 부모 참조 변수에 할당하면 부모 메서드에 접근이..

[김영한_자바기본][9.상속] 상속과 메모리 구조(p.7-20)

0. 상속은 중복을 줄이고 기능을 확장한다. 1. 부모 클래스 / 자식 클래스들의 각 각의 객체가 존재하나 같은 참조값을 바라본다. 2. 오버라이딩은 상속에서만 사용되며, 부모의 메서드를 재정의하는 것이다. 3. 상속의 접근 제어자 protected이다. 4. super을 통해 부모를 참조하고, 생성자를 만든다. 생성자 호출은 부모→자식으로 진행된다. 1. 상속 이해 [p.3 / Car_부모 클래스 ] public class Car { public void move() { System.out.println("차를 이동합니다."); } } [p.3 / ElectircCar_자식 클래스] Car에서 상속받음 public class ElectricCar extends Car { public void charg..

[김영한_자바기본][7. 자바 메모리 구조와 static] static 변수 및 메서드 이해 (p.15-31)

객체 인스턴스가 필요한 이유는 멤버 변수(인스턴스)변수를 사용하기 위함 static(정적 변수/클래스 변수)는 공통으로 사용되며, static변수/메서드는 클래스 자체에 접근해 사용 그러나 클래스 static메서드는 static 변수/메서드만 사용할 수 있고, 그 外는 static을 모두 사용 끝으로 main메서드 자체가 정적 메서드이기 static을 사용 1. Static 변수의 이해 [p.15 / Counter] count를 공용으로 사용 public class Counter { //메서드 영역 public int count; //멤버변수 -> 메서드 영역 // 객체로 사용될 경우 -> 힙영역 } - 클래스의 멤버 변수는 메서드 영역_클래스 정보에 속한다. - 클래스의 인스턴스마다 별도의 메모리 공간..

[김영한_자바기본][7. 자바 메모리 구조와 static] 자바 메모리 구조 이해 / 스택과 큐 자료 구조(p.1-12)

메서드 영역: 프로그램의 클래스 정보와 정적 변수를 저장하는 공간힙 영역: 동적으로 생성되는 객체들을 저장하는 공간스택 영역: 메서드 호출 및 파라미터를 임시로 저장하는 공간**메인 메서드 자체는 메서드 영역이나, 호출되고 실행될 때는 관련데이터가 스택에 저장된다.   [자바 메모리 구조 이해]ex) 커피 빨리 마시기 대회메서드 영역> 스택 영역  >힙 영역 1. 커피머신 - 상시 배치2. 테이블 - 상시 배치3. 감독관 - 상시 배치1. N번 참가자2. N번 참가자가 마시는 커피    (참가자가 생성하는 Sth)1. 커피 마신 시간 - 전광판 기록ex) 동작이 발생할때 마다 기록(실제) 클래스, 메서드, 생성자,         멤버변수(=필드), static변수 (실제) 파라미터 값, 지역변수, 호출자..

[김영한_자바기본][6. 접근 제어자] 배열 / 접근 제어자 함께 이해하기_문제풀이 쇼핑 카트(p.17)

패키지가 서로 다르다면 import를 선언하는 것이 중요하며, main 메서드가 없는 경우 매개변수로 대체하여 진행할 수 있다. 끝으로 return은 메서드 (전체) 실행 중간에서 빠져나가는 역할을 하고, break는 주로 반복문에서 사용되며, 반복을 중단하고 루프를 빠져나간다. 배열의 모든 요소를 점검해야할 때 break를 통해 빠져나가는 것은 추천하지 않는다. *문제풀이_쇼핑 카트 [p.17 / 실행 요청 결과] 장바구니 상품 출력 상품명 : 마늘, 합계 : 4000 상품명 : 상추, 합계 : 12000 전체 가격 합 : 16000 [p.17 / shoppingcart main class] public static void main(String[] args) { ShoppingCart cart = n..

[김영한_자바기본][2.기본형과 참조형] 상품 주문 시스템 개발_문제 풀이 해석 보충 (p.30-34)

중간 변수 없이 참조값 자체를 배열로 전달할 수 있으며, 배열을 매개변수로 받으면 배열 내 요소를 반복 출력할 수 있다. 또한 입력받은 값은 배열에 담기위한 작업을 수행하고, 기존 코드를 기반으로 응용하면 된다. *문제 풀이_상품 주문 시스템 개발 [p.30 / ProductOrder Class] public class ProductOrder { String productName; int price; int quantity; } >> 출력예시 상품명: 두부, 가격: 2000,수량: 2 상품명: 김치, 가격: 5000, 수량: 1 상품명: 콜라, 가격: 1500, 수량: 2 총 결제 금액: 12000 [p.31 / ProductOrderMain class] public static void main(Str..

[김영한_자바기본][3. 객체 지향 프로그래밍] 매서드 보충

`void`를 사용하는 경우는 메소드가 값을 반환하지 않고, 단순한 정보전달 작업을 수행할 때 사용한다. '다른 타입'을 사용하는 경우는 메소드가 어떤 값을 계산하거나 반환하여 호출자에게 제공할 때 사용한다. [void 타입 사용] public class ExampleVoid { int width; int height; // 메소드가 값을 반환하지 않음(void) void printRectangleInfo() { System.out.println("넓이: " + (width * height)); System.out.println("둘레 길이: " + (2 * (width + height))); if (width == height) { System.out.println("정사각형입니다."); } else ..

[김영한_자바기본][2.기본형과 참조형] Null/NullPointerExcepiton 이해 (p.23-29)

null은 가리키는 대상이 없거나, 나중에 입력하고 싶을때 사용된다. nullPointerException은 null이 없는 곳(참조 주소가 없음)을 찾아갈 때 발생한다. NullPointerException 이해하기 [p.23 / Data 클래스] public class Data { int value; } [p.26 / 지역 변수 내 NullPointerException] NullPointerException 이해하기 public static void main(String[] args) { Data data = null; data.value = 10; //NullPointerException발생 = 주소가 없는 곳을 찾아감 System.out.println("data.value = " + data.va..

[김영한_자바기본][2.기본형과 참조형] (보충) 기본형 / 참조형 - 메서드, 문제 풀이 해석 (p.11-20, p.30-34)

▶ 기본형과 참조형 이해 https://zoooom-in.tistory.com/45 [김영한_자바기본][2.기본형과 참조형] 기본형 / 참조형 이해 (p.1-6) 참조값에 접근한다는 것은 설계도와 부지 위치에 접근해서 같이 공동 작업을 하는 것이다. 기본형은 실제 값이 저장되어 독립적으로 관리되지만, 참조형은 변수에는 객체 위치(참조값)가 저장 zoooom-in.tistory.com 1. 기본형 vs 참조형 - 메서드 호출 [p.11 / 기본형 메서드 호출] 각 스코프로 분리해서 보기 - void로 return받는 값이 없음 public static void main(String[] args) { int a = 10; System.out.println("메서드 호출 전 a = " + a); changeP..