본문 바로가기

전체 글83

상속 & 클래스 간의 관계 상속  기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 통해 클래스를 작성하면 적은 양의 코드를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. 이러한 특징은 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생상성과 유지보수에 크게 기여한다.class Child extends Parent{ // ...}   자손 클래스는 조상 클래스의 모든 멤버를 상속 받으므로 항상 조상 클래스보다 같거나 많은 멤버를 갖는다. 즉, 상속에 상속을 거듭할수록 상속받는 클래스의 멤버 개수는 점점 늘어나게 된다. 그래서 상속을 받는다는 것은 조상 클래스를 확장(extend)한다는 의미로 해석할 수도 있으며 이것이 상속에 사용되는 키워드가 'exte.. 2024. 5. 30.
변수의 초기화 변수의 초기화멤버변수는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화가 이루어지므로 초기화하지 않고 사용해도 되지만, 지역변수는 사용하지 전에 반드시 초기화해야 한다. *각 타입의 기본값자료형기본값booleanfalsechar'\u000'byte, short, int0long0Lfloat0.0fdouble0.0d 또는 0.0참조형 변수nullStringnull 멤버변수의 초기화 방법1. 명시적 초기화변수를 선언과 동시에 초기화하는 것을 명시적 초기화라고 한다. class Car { int door = 4; // 기본형(primitive type) 변수의 초기화 Engine e = new Engine(); // 참조형(reference type) 변수의 초기화}명.. 2024. 5. 29.
생성자(Constructor) 생성자란?생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 따라서 인스턴스 변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 할 작업을 위해서도 사용된다. 생성자의 조건1. 생성자의 이름은 클래스의 이름과 같아야 한다.2. 생성자는 리턴 값이 없다. 인스턴스를 생성하는 과정(코드 예)Card c = new Card();1. 연산자 new에 의해서 메모리(heap)에 Card 클래스의 인스턴스가 생성된다.2. 생성자 Card()가 호출되어 수행된다.3. 연산자 new의 결과로, 생성된 Card 인스턴스의 주소가 반환되어 참조변수 c에 저장된다. 기본 생성자컴파일 할 때, 소스파일(*.java)의 클래스에 생성자가 하나도 정의되지 않은 경우 컴파일러는 자동적으로 기본 .. 2024. 5. 29.
오버로딩(overloading) 오버로딩(overloading)이란?한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 '메서드 오버로딩' 또는 '오버로딩'이라고 한다. 가장 대표적인 예는 println메서드가 있다. printStream 클래스에는 어떤 종류의 매개변수를 지정해도 출력할 수 있도록 오버로딩된 println 메서드를 정의해놓고 있다. 오버로딩 조건1. 메서드 이름이 같아야 한다.2. 매개변수의 개수 또는 타입이 달라야 한다.3. 반환 타입은 오버로딩을 구현하는데 아무런 영향을 주지 않는다. 오버로딩 예1)int add(int a, int b) { return a+b; }int add(int x, int y) { return x+y; }=> 오버로딩이 아니다!=> 왜? 위의 두 메서드는 매개변수의 이름만 다를 뿐.. 2024. 5. 29.
객체 지향 프로그래밍(OOP) 객체 지향 언어란?객체지향이론의 기본 개념은 '실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다.'라는 것이다. 실제 사물의 속성과 기능을 분석한 다음, 데이터(변수)와 함수로 정의한 것이다. 객체 지향 언어 주요특징코드의 재사용성이 높다.코드의 관리가 용이하다.신뢰성이 높은 프로그래밍을 가능하게 한다. 객체지향개념 4가지상속캡슐화추상화다형성 클래스와 객체클래스객체를 정의해놓은 것클래스란 '객체를 만들어 내는 위한 설계도 또는 틀'이다.데이터와 함수의 결합객체사전적인 정의는 실제로 존재하는 것. 사물 또는 개념프로그래밍에서의 객체는 클래스에 정의된 내용대로 메모리에 생성된 것을 뜻한다. +정리하자면 클래스와 객체의 관계는 제품 설계도와 제품의 관계라고 할 수 있다... 2024. 5. 28.
배열 선언과 초기화 배열이란?같은 자료형끼리 묶어둔 것!배열은 한 번 생성하면 그 길이를 바꿀 수 없다.왜? 배열은 연속된 메모리 공간을 갖는다. 하지만 값을 바꾸면 메모리 공간을 연속되게 확보할 수 있다는 보장이 없기 때문이다.그렇다면? 길이가 큰 배열을 새로 만들어서 값을 복사하면 된다. 배열 선언과 초기화배열 선언과 초기화 (가능한 것과 불가능한 것 잘 알아두기!)// 가능int[] arr[];int[] arr = {1, 2, 3};int arr[] = {1, 2, 3, 4, 5};int[] arr = new int[5];int[] arr[] = new int[3][];// 불가능int[] arr = new int[5]{1, 2, 3, 4, 5}; // 초기화 할 때는 크기를 정할 수 없다.int arr[5]; // .. 2024. 5. 26.