목록[Java]/Program source (java) (146)
Everything has an expiration date
/*=========================== ■■■ 클래스 고급 ■■■ - 추상 클래스(abstract) =============================*/ /* ○ 추상 클래스(abstract)는 선언만 있고 정의가 없는 하나 이상의 메소드(추상 메소드)를 갖는 클래스로 하위 클래스(자식 클래스)에서 오버라이딩(Overriding)할 것으로 예상되는 메소드에 대해 메모리 낭비 없이 미리 호출 계획을 세워두기 위해 만든다. ○ 형식 및 구조 [접근제어지시자] abstract class 클래스명 { [접근제어지시자] abstract 자료형 메소드명([매개변수], ...); } ○ 특징 클래스가 적어도 하나 이상의 추상 메소드를 포함할 때 그 클래스는 클래스 앞에 『abstract』 키워드를 ..
부모에게 받은 `write()` 함수를 자식 클래스에서 Overriding 함으로써, 자식 객체 참조 변수 ob를 업 캐스팅(부모로 승격) 했을 때도 자식이 Overriding한 메소드가 호출되는 것을 확인하는 프로그램 → 자식 객체 참조변수 ob를 부모 클래스(SuperTest114)로 업 캐스팅하여 `((SuperTest114)ob).write();` 를 호출했을 때(부모 클래스의 write() 메소드를 호출하려는 의도) 부모가 물려준 write() 메소드를 자식 객체가 Method Overriding 한 write() 메소드(Sub write() 메소드)로 호출하는 것을 확인. /*=========================== ■■■ 클래스 고급 ■■■ - 상속(Inheritance) =====..
/*=========================== ■■■ 클래스 고급 ■■■ - 상속(Inheritance) =============================*/ // 다음과 같은 프로그램을 구현한다. // 단, 상속의 개념을 적용하여 작성할 수 있도록 한다. // 실행 예) // 임의의 두 정수 입력(공백 구분) : 20 10 // 연산자 입력(+ - * /) : - // >> 20 - 10 = 10 // 계속하려면 아무 키나 누르세요... //import java.util.Scanner; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; class Aclass { protecte..
Ⅰ. [부모 클래스에서 매개변수를 받는 사용자 정의 생성자만을 생성했을 경우... ] 부모 클래스(상위 클래스)에서 사용자 정의 생성자로 매개변수를 받는 생성자를 생성했을 경우 인자(매개변수 parameter)를 받지 않는 default 생성자()는 자동으로 생성되지 않는다. ↓ ★ 이때, 자식 클래스 생성자 정의에서 부모 생성자 호출 형태를 어떻게 하느냐에 따라 오류가 발생할 수 있다. public class SuperTest112// 부모 클래스! { // 사용자 정의 생성자 생성. (매개변수 문자열 타입 str) public SuperTest112(Sting str) { // SuperTest112 생성자 } // 사용자 정의 생성자를 생성했으므로 default 생성자는 생성되지 않음. // 즉, ..
/*=========================== ■■■ 클래스 고급 ■■■ - 상속(Inheritance) =============================*/ /* ○ 상속(Inheritance)이란 새로 설계(생성)하고자 하는 클래스가 이미 설계되어 있는 다른 클래스의 기능과 중복되는 경우 이미 설계된 클래스의 일부분이나 전체 구조를 공유할 수 있도록 하는 기능을 의미한다. 즉, 상속은 객체를 좀 더 쉽게 만들 수 있는 고수준의 재사용성(reusablility)을 확보하고 객체 간의 관계를 구성함으로써 객체 지향의 또 다른 특징인 『다형성』 의 문법적 토대가 된다. 상속은 기존 프로그램의 클래스 내용을 공유함으로써 중복된 코드들을 재작성할 필요 없이 반복적이고 세부적인 작업을 처리하지 않기 ..
// 향상된 버블 정렬(Bubble Sort) // ※ 앞에서 본 Selection Sort(Test107.java)나 Bubble Sort(Test108.java)의 성능은 같다. // (→ 성능에 대한 추정 근거 : 반복문을 수행한 횟수) // 하지만, 향상된 Bubble Sort 는 대상 데이터의 구조에 따라서 // 일반 Bubble Sort 나 Selection Sort 에 비해 성능이 좋을 수 있다. // 원본 데이터 : 61 15 20 22 30 // 15 61 20 22 30 // 15 20 61 22 30 // 15 20 22 61 30 // 15 20 22 30 61 - 1회전 (스왑 발생 → true) → 다음 회전 진행 ○ // 15 20 22 30 61 - 2회전 (스왑 발생 → f..