Java 14

JAVA / 객체 간의 상속

※출처 https://fastcampus.co.kr/dev_online_javaend https://danmilife.tistory.com/21 http://www.tcpschool.com/java/java_modifier_accessModifier 상속이란 기존 클래스의 변수와 메서드를 물려받아 새로운 클래스(더 나은, 더 구체적인 클래스)를 구성하는 것을 의미함. 이러한 상속은 캡슐화, 추상화, 다형성과 더불어 객체지향 프로그래밍을 구성하는 특징 중 하나. 예시로 현실세계에서 부모의 생물학적 특성을 자식이 물려받는 유전과 비슷하다 볼 수 있다. 장점 및 특징 장점 기존 클래스의 변수와 코드를 재사용할 수 있어 개발 시간이 단축된다. 먼저 작성된 검증된 프로그램을 재사용하기 때문에 신뢰성 있는 프로그램..

JAVA / 객체 배열을 구현한 클래스 ArrayList

※출처 https://fastcampus.co.kr/dev_online_javaend https://crazykim2.tistory.com/558 https://shpk333.tistory.com/10 ArrayList란 Collection 프레임워크의 일부이며 java.util 패키지에 소속되어 있다. 표준 배열보다는 느리지만 배열에서 많은 조작이 필요한 경우 유용하게 사용할 수 있다. List 인터페이스에서 상속받아 사용이 된다. 자장 용량(capacity)이 가변적으로 변하는 선형 리스트이다. 이미 많은 메서드들이 최적의 알고리즘으로 구현되어 있어 각 메서드의 사용 방법만 익히면 유용하게 사용할 수 있다. ArrayList의 주요 메서드 boolean add(E e) : 요소 하나를 배열에 추가합니..

JAVA / 객체 배열 사용하기

※출처 https://fastcampus.co.kr/dev_online_javaend https://coding-factory.tistory.com/548 객체 배열 선언과 구현 기본 자료형 배열은 선언과 동시에 배열의 크기만큼의 메모리가 할당되지만, 객체 배열의 경우엔 요소가 되는 객체의 주소가 들어갈(4바이트, 8바이트) 메모리만 할당되고(null) 각 요소 객체는 생성하여 저장해야 함 library[0] library[1] library[2] library[3] library[4] null null null null null 객체 배열 예제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33..

JAVA / static 응용 - 싱글톤 패턴(singleton pattern)

※출처 https://fastcampus.co.kr/dev_online_javaend https://tecoble.techcourse.co.kr/post/2020-11-07-singleton/ https://elfinlas.github.io/2019/09/23/java-singleton/ 프로그램에서 객체의 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴 static변수, 메서드를 활용하여 구현할 수 있음 생성자의 호출이 반복적으로 이뤄져도 실제로 생성되는 객체는 최초 생성된 객체를 반환해 주는 것 사용 이유 한 번의 객체 생성으로 재 사용이 가능하기 때문에 메모리 낭비를 방지할 수 있다. 다른 클래스 간에 데이터 공유가 쉽다. 도메인 관점에서 인스턴스가 한 개만 존재하는 것을 보증하고..

JAVA / static 메서드

※출처 https://fastcampus.co.kr/dev_online_javaend https://mangkyu.tistory.com/47 https://dev-coco.tistory.com/23 static 메서드는 객체의 생성 없이 호출이 가능 객체에서는 호출이 가능하지만 지양한다. 일반적으로 유틸리티 관련 함수는 static 메서드로 구현하는 것이 적합 대표적인 Util Class는 java.util.Math가 있다. static 메서드(Class Mathod)에서는 인스턴스 변수를 사용할 수 없다. static 메서드는 인스턴스 생성과 무관하게 클래스 이름으로 호출 될 수 있음 인스턴스 생성 전에 호출 될 수 있으므로 static 메서드 내부에서는 인스턴스 변수의 사용을 허용하지 않음 인스턴스 ..

JAVA / static 변수

※출처 https://fastcampus.co.kr/dev_online_javaend https://coding-factory.tistory.com/524 https://mangkyu.tistory.com/47 static 키워드를 통해 생성된 정적멤버는 static 메모리 영역에 할당된다. static 메모리 영역에 할당된 모든 객체는 공유되어 하나의 멤버를 어디서든지 참조할 수 있다. Garbage Collector의 관리 영역 밖에 존재해 static 영역에 있는 멤버들은 프로그램이 종료 될때까지 메모리가 할당된 상태로 존재한다. static을 남발하면 시스템 성능에 악영향을 줄 수 있다. static 변수는 클래스 변수이다. 객체를 생성하지 않아도 static 자원에 접근이 가능하다. 공통으로 사..

JAVA / 객체 간의 협력(Collaboration)

※출처 https://fastcampus.co.kr/dev_online_javaend 객체 지향 프로그래밍에서 협력 객체 지향 프로그램에서 객체 간에는 협력이 이루어짐 협력을 위해서는 필요한 메시지를 전송하고 이를 처리하는 기능이 구현되어야 함 매개 변수로 객체가 전달되는 경우가 발생 객체 간의 협력 예제 James와 Tomas는 각각 버스와 지하철을 타고 학교에 갑니다. James는 5000원을 가지고 있었고, 100번 버스를 타면서 1000원을 지불합니다. Tomas는 10000원을 가지고 있었고, 초록색 지하철을 타면서 1200원을 지불합니다. 두 학생이 버스와 지하철을 타는 상황을 구현해 보자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2..

JAVA / 객체 자신을 가리키는 this

※출처 https://fastcampus.co.kr/dev_online_javaend https://jaynamm.tistory.com/entry/JAVA-this-%EC%9D%98%EB%AF%B8%EC%99%80-%EC%82%AC%EC%9A%A9%EB%B2%95 https://velog.io/@imhyejeong/Java-this-%ED%82%A4%EC%9B%8C%EB%93%9C this가 하는 일 인스턴스 자신의 메모리를 가리킴 생성자에서 또 다른 생성자를 호출 할때 사용 자신의 주소(참조값)을 변환함 클래스 메소드 및 생성자에서 자기 자신의 데이터를 업데이트하거나 조작할 수 있다. 인스턴스를 가리키는 참조와 인스턴스 자체는 다르다. 객체 자신의 대한 참조값을 가진다. 메소드 내에서만 사용된다. 객체..

JAVA / 캡슐화(encapsulation)

※출처 https://fastcampus.co.kr/dev_online_javaend https://jaynamm.tistory.com/entry/JAVA-%EC%9E%90%EB%B0%94-%EC%BA%A1%EC%8A%90%ED%99%94-Encapsulation https://velog.io/@yooil605/JAVA-Encapsulation 정보 은닉을 활용한 캡슐화 변수와 함수(메서드)를 하나의 단위로 묶는 것을 의미함, 데이터의 번들링을 뜻한다. 꼭 필요한 정보와 기능만 외부에 오픈함 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만은 제공하여 일관된 기능을 구현 하게 함 각각의 메서드나 맴버 변수를 접근함으로써 오류를 최소화한다. 연관된 목적을 가지는 변수와 함수를 하나의 클래스로..

JAVA / 접근 제어 지시자(access modifier)와 정보은닉(infomation hiding)

※출처 https://fastcampus.co.kr/dev_online_javaend https://88240.tistory.com/448 https://wikidocs.net/232 https://zangzangs.tistory.com/36 접근 제어 지시자(access modifier) 클래스 외부에서 클래스의 멤버 변수, 생성자를 사용할 수 있는지 여부를 지정하는 키워드 접근 제어자가 사용될 수 있는 곳 : 클래스, 멤버 변수, 생성자, 매서드 private 접근제어자가 private으로 설정되었다면 private이 붙은 변수, 메서드는 해당 클래스에서만 접근 가능 default 접근 제어자를 별도로 설정하지 않는다면 접근 제어자가 없는 변수, 메소드는 default 접근 제어자가 되어 해당 패키지..