본문 바로가기

언어 기초

Object클래스 [JAVA | 학습을 위한 자료 | 김영한 자바 중급 1편] java.lang 패키지 소개자바가 기본으로 제공하는 라이브러리(클래스 모음) 중에 가장 기본이 되는 것이 바로 java.lang 패키지이다. lang은 Language(언어)의 줄임말이다. 쉽게 이야기해서 자바 언어를 이루는 가장 기본이 되는 클래스들을 보관하는 패키지를 뜻한다.java.lang 패키지의 대표적인 클래스들Object : 모든 자바 객체의 부모 클래스String : 문자열Integer, Long, Double : 래퍼 타입, 기본형 데이터 타입을 객체로 만든 것Class : 클래스 메타 정보System : 시스템과 관련된 기본 기능들을 제공Object 클래스자바에서 모든 클래스의 최상위 부모 클래스는 항상 Object클래스이다.자바에서 Object 클래스가 최상위 부모 클래스인 이유는 공.. 더보기
다형성 [JAVA | 학습을 위한 자료 | 김영한 자바 기본] 다형적 참조다형적 참조는 객체 지향 프로그래밍에서 매우 중요한 개념이다. 이를 간단히 말하자면, 부모 클래스 타입의 변수가 자식 클래스 타입의 객체를 참조할 수 있다는 의미이다.부모는 자식을 담을 수 있지만 자식은 부모를 담을 수 없다.이때는 다운캐스팅이라는 기능을 사용해서 부모 타입을 잠깐 자식 타입으로 변경하면 된다.부모 클래스 타입의 변수를 자식 클래스 타입으로 변환하고 싶을 때는 다운캐스팅을 사용해야 한다다형성과 메서드 오버라이딩다형성을 이루는 또 하나의 중요한 핵심 이론은 바로 메서드 오버라이딩이다. 메서드 오버라이딩에서 꼭! 기억해야 할 점은 오버라이딩 된 메서드가 항상 우선권을 가진다는 점이다. 그래서 이름도 기존 기능을 덮어 새로운 기능을 재정의 한다는 뜻의 오버라이딩이다.추상 클래스동물(.. 더보기
상속 [JAVA | 학습을 위한 자료 | 김영한 자바 기본] 상속은 객체 지향 프로그래밍의 핵심 요소 중 하나로, 기존 클래스의 필드와 메서드를 새로운 클래스에서 재사용하게 해준다. 이름 그대로 기존 클래스의 속성과 기능을 그대로 물려받는 것이다. 상속을 사용하려면 extends 키워드를 사용하면 된다. 그리고 extends 대상은 하나만 선택할 수 있다.용어 정리부모 클래스 (슈퍼 클래스): 상속을 통해 자신의 필드와 메서드를 다른 클래스에 제공하는 클래스자식 클래스 (서브 클래스): 부모 클래스로부터 필드와 메서드를 상속받는 클래스상속은 부모의 기능을 자식이 물려 받는 것이다. 따라서 자식이 부모의 기능을 물려 받아서 사용할 수 있다. 반대로 부모 클래스는 자식 클래스에 접근할 수 없다. 자식 클래스는 부모 클래스의 기능을 물려 받기 때문에 접근할 수 있지만 .. 더보기
final [JAVA | 학습을 위한 자료 | 김영한 자바 기본] 자바 상수 특징static final 키워드를 사용한다.대문자를 사용하고 구분은 _ (언더스코어)로 한다. (관례) 일반적인 변수와 상수를 구분하기 위해 이렇게 한다.필드를 직접 접근해서 사용한다. 상수는 기능이 아니라 고정된 값 자체를 사용하는 것이 목적이다. 상수는 값을 변경할 수 없다. 따라서 필드에 직접 접근해도 데이터가 변하는 문제가 발생하지 않는다.public class Constant { //수학 상수 public static final double PI = 3.14; //시간 상수 public static final int HOURS_IN_DAY = 24; public static final int MINUTES_IN_HOUR = 60; public static final int SEC.. 더보기
자바 메모리구조와 static [JAVA | 학습을 위한 자료 | 김영한 자바 기본] 자바 메모리 구조와 static메서드 영역: 클래스 정보를 보관한다. 이 클래스 정보가 붕어빵 틀이다.스택 영역: 실제 프로그램이 실행되는 영역이다. 메서드를 실행할 때 마다 하나씩 쌓인다.힙 영역: 객체(인스턴스)가 생성되는 영역이다. new 명령어를 사용하면 이 영역을 사용한다. 쉽게 이야기해서 붕어빵 틀로부터 생성된 붕어빵이 존재하는 공간이다. 참고로 배열도 이 영역에 생성된다.메서드 영역(Method Area)메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이 영역은 프로그램의 모든 영역에서 공유한다.클래스 정보: 클래스의 실행 코드(바이트 코드), 필드, 메서드와 생성자 코드등 모든 실행 코드가 존재한다.static 영역: static 변수들을 보관한다. 뒤에서 자세히 설명한.. 더보기
접근제어자, 캡슐화 [JAVA | 학습을 위한 자료 | 김영한 자바 기본] 접근 제어자의 종류private: 모든 외부 호출을 막는다.default: 같은 패키지안에서 호출은 허용한다.protected : 같은 패키지안에서 호출은 허용한다. 패키지가 달라도 상속 관계의 호출은 허용한다.public : 모든 외부 호출을 허용한다.순서대로 private이 가장 많이 차단하고, public이 가장 많이 허용한다. private -> default -> protected -> publicprivate 은 나의 클래스 안으로 속성과 기능을 숨길 때 사용, 외부 클래스에서 해당 기능을 호출할 수 없다.default 는 나의 패키지 안으로 속성과 기능을 숨길 때 사용, 외부 패키지에서 해당 기능을 호출할 수 없다.protected 는 상속 관계로 속성과 기능을 숨길 때 사용, 상속 관계가 .. 더보기
생성자 [JAVA | 학습을 위한 자료| 김영한 자바 기본] 자바의 생성자는 클래스의 인스턴스가 생성될 때 호출되어 객체를 초기화하는 특수한 메서드이다. 생성자는 클래스와 동일한 이름을 가지며, 반환 타입이 없다. 생성자의 주요 역할은 객체의 초기 상태를 설정하는 것이다. 생성자는 다음과 같은 특징을 가진다:생성자의 특징이름이 클래스 이름과 동일: 생성자는 클래스 이름과 동일한 이름을 가지며, 반환 타입을 명시하지 않는다.반환 타입이 없음: 생성자는 반환 타입이 없으며, 반환 타입을 명시하지 않는다.자동 호출: 객체가 생성될 때 자동으로 호출된다.오버로딩 가능: 생성자도 메서드처럼 오버로딩할 수 있다. 즉, 동일한 이름의 생성자를 여러 개 정의할 수 있으며, 각 생성자는 서로 다른 매개변수 목록을 가질 수 있다.기본 생성자 제공: 클래스에 생성자가 하나도 정의되지.. 더보기
참조형 [JAVA | 학습을 위한 자료와 스크립트 | 김영한 자바 기본] 가비지 컬렉터 GC   public class ProductOrderMain2 { public static void main(String[] args) {// 여러 상품의 주문 정보를 담는 배열 생성// createOrder()를 여러번 사용해서 상품 주문 정보들을 생성하고 배열에 저장 // printOrders()를 사용해서 상품 주문 정보 출력// getTotalAmount()를 사용해서 총 결제 금액 계산// 총 결제 금액 출력} } public class RefactoringA { public static void main(String[] args) { ProductOrder[] orders = new ProductOrder[3]; orders[0] = cre.. 더보기