Java/[inflearn] 자바 기본 19

[김영한_자바기본][12. 다형성과 설계] (보충) 예제를 통한 이해 (p.13-

▶ 다형성 사용 전, 후 : 예제를 통한 이해 https://zoooom-in.tistory.com/63 [김영한_자바기본][12. 다형성과 설계] 다형성 사용 전, 후 예제를 통한 이해 (p.1-20) OCP(Open-Closed principle) 원칙 = 전략 패턴 - Open for extension : interface(전략 정의)를 통한 구현 확장이 가능해야 한다. - closed for modification : 클라이언트 부분의 코드가 수정이 불가능해야한다. 단, 메인 zoooom-in.tistory.com [p.13 / Driver] `drive()` 메서드는 `k3Car` 변수가 가리키는 실제 객체(원본 `k3Car`의 참조값)의 메서드를 호출 public class Driver { K..

[김영한_자바기본][10. 다형성1] (보충) 다형성과 캐스팅 / 일시적 다운 캐스팅 (p.7-10)

▶ [다형성1] 상속과 메모리 구조 https://zoooom-in.tistory.com/61 [김영한_자바기본][10. 다형성1] 상속과 메모리 구조(p.1-23) 1. 자식 객체를 부모 참조 변수에 할당하면 부모 메서드에 접근이 가능하다. 2. 다운캐스팅은 '일시적으로' 부모 타입의 참조 변수를 자식 타입으로 형변환하는 것이다. 3. 다운 캐스팅 수행 전 ins zoooom-in.tistory.com 자식 타입의 기능을 사용하려면 다운 캐스팅 결과를 변수에 담아두고, 이후 사용하면 된다. `자식` 변수를 통해 `부모` 객체를 참조할 때에 `자식` 타입으로 형변환된 객체를 사용할 수 있다. 다만 참조하는 의미를 담은 코드를 실행해도 구현된다. 즉 다운캐스팅으로 변수 타입 자체를 변경하는 것이 아니라 변..

[김영한_자바기본][8.final] finl 변수와 참조 (p.7-8)

final을 참조형 변수에 사용하면 참조값을 변경할 수 없다. ex) final Data data = new Data(); [p.7 / FinalRefMain] public class FinalRefMain { public static void main(String[] args) { final Data data = new Data(); //data = new Data(); data.value = 10; System.out.println(data.value); data.value = 20; System.out.println(data.value); } } - `final` 키워드를 사용하여 선언된 변수는 한 번 할당된 참조값을 변경할 수 없다. - 따라서 `final Data data = new Data()..

[김영한_자바기본][6. 접근 제어자] (보충) 접근 제어자 - 클래스 / 클래스 내부 동일한 클래스 객체 생성(p.10-11)

▶ 배열 / 접근제어자 이해 https://zoooom-in.tistory.com/55 [김영한_자바기본][6. 접근 제어자] 배열 / 접근 제어자 함께 이해하기_문제풀이 쇼핑 카트(p.17) 패키지가 서로 다르다면 import를 선언하는 것이 중요하며, main 메서드가 없는 경우 매개변수로 대체하여 진행할 수 있다. 끝으로 return은 메서드 (전체) 실행 중간에서 빠져나가는 역할을 하고, bre zoooom-in.tistory.com 클래스 내부에서 클래스와 동일 객체 생성이 가능하다. 또한 Public Class는 1개만 사용 가능하며, Default Class는 여러개 사용이 가능하다. [p.10 / PublicClass_일부 발췌] 클래스 내부 동일한 클래스 객체 생성 가능 public cl..

[김영한_자바기본][3. 객체 지향 프로그래밍] (보충) 객체 지향 메서드 이해 (p.8-9, p.12)

▶ 클래스와 메서드 이해 : 객체 지향 / 절차 지향 차이 이해 https://zoooom-in.tistory.com/51 [김영한_자바기본][3. 객체 지향 프로그래밍] 클래스와 메서드 / (복습) 객체 이해(p.8-11) 두 코드 모두 원본 클래스 내의 데이터 값을 참조하는 특징이 있다. 따라서 클래스의 내부 상태가 메서드에 의해 변경되며, 이 변경은 메서드를 호출한 외부에서도 반영된다. 이런식으로 객체의 zoooom-in.tistory.com 절차 지향은 데이터/기능이 분리되며, 메서드는 객체를 전달받아 해당 객체의 필드를 증가시킨다. 객체 지향은 데이터/기능이 한 공간에 함께 있으며, 메서드를 통해 내부 상태를 '직접 참조하여' 조작한다. 1. 절차 지향 [p.8 / ValueData] publi..

[김영한_자바기본][2. 기본형과 참조형] (보충) 메서드에 객체 전달 / 메서드에서 객체 반환 / NullPointerException (p.16-20, p.26-29)

▶ 1. 클래스와 데이터 : 클래스 생성 + 클래스의 이해 https://zoooom-in.tistory.com/65 [김영한_자바기본][1.클래스와 데이터] (보충) 배열 / 클래스 생성 / 배열 + 클래스 이해 (p.14, p.17, ▶ 배열의 선언과 생성 이해 https://zoooom-in.tistory.com/44 [김영한_자바입문][9.배열] 배열의 선언과 생성 이해하기 (p.2-7) 배열 선언은 아파트 부지 확보, 생성은 몇 개의 아파트를 확보할 것인지 배열 zoooom-in.tistory.com [BigData / Data 코드] Java에서 클래스의 멤버 변수는 선언 시에만 초기화할 수 있다 public class BigData { Data data = new Data(); Data da..

[김영한_자바기본][1.클래스와 데이터] (보충) 배열 / 클래스 생성 / 배열 + 클래스 이해 (p.14, p.17, p24-27)

▶ 배열의 선언과 생성 이해 https://zoooom-in.tistory.com/44 [김영한_자바입문][9.배열] 배열의 선언과 생성 이해하기 (p.2-7) 배열 선언은 아파트 부지 확보, 생성은 몇 개의 아파트를 확보할 것인지 배열의 값 할당은 부지를 참조해 실제 준공일을 기입한다. 할당 전까지는 부지 주소만 참조되어 나타난다. [코드 읽기 전 zoooom-in.tistory.com 1. 배열 이해하기 [p.14 / ClassStart2_배열 발췌] public static void main(String[] args) { String[] studentsName = new String[2]; studentsName[0] = "학생1"; studentsName[1] = "학생2"; System.out...

[김영한_자바기본][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..