✔ 상속의 기본 문법 이해 상속이란? 기존에 정의된 클래스에 메소드와 변수를 추가하여 새로운 클래스를 정의하는 것 클래스 간의 공통 규약을 적용하기 위해 정의하게 됨 키워드 extends는 상속을 의미하는 키워드 상속의 대상이 되는 클래스는 상위 클래스, 기초 클래스, 부모 클래스라고 불림 상속을 하는 클래스는 하위 클래스, 유도 클래스, 자식 클래스라고 불림 상속을 하는 클래스의 인스턴스에는 상속의 대상이 되는 클래스의 변수와 메소드가 존재하게 됨 자바는 상속할 수 있는 클래스가 최대 하나인 단일 상속만을 지원 그러나 상속의 깊이를 더하는 것을 얼마든지 가능 (AAA → MMM → ZZZ) class Man { String name; public void tellYourName() { System.ou..
✔ 1차원 배열의 이해와 활용 배열이란? 자료형이 같은 둘 이상의 값을 저장할 수 있는 메모리 공간 구조에 따라 1차원 배열과 2차원 이상의 다차원 배열로 나뉨 1차원 배열이란? 타입이 같은 둘 이상의 데이터를 저장할 수 있는 1차원 구조의 메모리 공간 둘 이상의 변수가 선의 형태로 존재하는 배열을 뜻하기도 함 자바에서는 배열도 인스턴스로 처리하게 됨 1차원 배열의 생성문은 참조변수의 선언과 배열의 생성으로 이루어짐 참조변수의 선언에는 참조할 대상에 대한 자료형을 정보를 나타냄 기본 자료형 외에도 인스턴스를 저장할 수 있는 배열의 생성도 가능함 1차원 배열의 참조변수는 배열의 길이에 상관없이 참조가 가능함 // int[] ref : int형 1차원 배열 인스턴스를 참조할 수 있는 참조변수의 선언 // n..
✔ 콘솔 출력 콘솔이란? 컴퓨터를 대상으로 데이터를 입력 및 출력하는 장치를 총칭하는 말 키보드와 모니터도 콘솔 입출력 장치에 해당 System.out.println 자바의 대표적인 콘솔 출력 메소드 문자열을 출력하고 나서 행을 바꾸는 특징을 가짐 참조 값이 전달되면, 이 값의 인스턴스를 대상으로 toString 메소드를 호출하여 반환되는 문자열을 출력함 System.out.print 문자열을 출력하고 나서 행을 바꾸지 않는 특징을 가짐 참조 값이 전달되면, 이 값의 인스턴스를 대상으로 toString 메소드를 호출하여 반환되는 문자열을 출력함 System.out.printf 문자열의 내용을 조합하여 출력하는 기능을 제공 줄 바꿈을 자동으로 하지 않음 출력의 기본 구성을 담은 문자열과 문자열을 채우기 위..
✔ 메소드 오버로딩 메소드 오버로딩의 조건 호출할 메소드를 찾을 때는 메소드의 이름과 메소드의 매개변수 정보를 참조하여 메소드를 찾게 됨 그러므로 한 클래스 내에 동일한 이름의 메소드를 둘 이상 정의하는 것을 옳지 않지만, 매개변수의 선언이 다르면 가능함 이렇게 매개변수의 선언이 다르면 동일한 이름의 메소드 정의를 허용하는 것을 메소드 오버로딩이라 함 구체적으로는 매개변수의 수 또는 형이 달라야 함 void simpleMethod(int n) { ... } void simpleMethod(int n1, int n2) { ... } void simpleMethod(double d) { ... } 오버로딩 된 메소드를 호출할 때에는 전달인자의 자료형과 매개변수의 자료형을 일치시키는 것이 좋음 만약 관련 인자..
✔ static 선언을 붙여서 선언하는 클래스 변수 클래스 변수(static 변수)란? 인스턴스가 생성되었을 때, 생성된 인스턴스 안에 존재하는 변수인 인스턴스 변수와 달리, 클래스 변수는 인스턴스의 생성과 상관없이 존재하는 변수 클래스 내에서 선언된 변수 앞에 static 선언을 붙이면 클래스 변수가 됨 클래스 변수는 인스턴스 내에 존재하는 변수가 아니라, 어떠한 인스턴스에도 속하지 않는 상태로 메모리 공간에 딱 하나만 존재하는 변수 이렇게 static으로 선언된 변수는 변수가 선언된 클래스의 모든 인스턴스가 공유하는 변수가 됨 class InstCnt { static int instNum = 0; InstCnt() { instNum++; System.out.println("인스턴스 생성: " + in..
✔ 정보 은닉 정보 은닉? 객체지향 기반의 클래스 설계에 있어 가장 기본이면서 중요한 원칙 중 하나 자바에서 말하는 '정보'는 클래스의 '인스턴스 변수'를 의미하므로 정보를 은닉한다는 것은 인스턴스 변수를 숨긴다는 뜻 만약 인스턴스 변수의 직접적인 접근을 허용하면, 컴파일 과정에서 드러나지 않는 중대한 실수가 발생할 수 있음 이러한 오류는 실행 결과에서도 드러나지 않아 더 큰 문제가 됨 예) 메소드 정의를 통한 인스턴스 변수를 초기화하지 않고 직접적으로 인스턴스 변수에 접근하는 경우 class Circle { double rad = 0; final double PI = 3.14l public Circle(double r) { setRad(r); } public void setRad(double r) { ..
✔ 클래스 패스 클래스 패스란? 자바 가상머신이 클래스 파일을 찾는 경로를 뜻함 자바 가상머신은 프로그램의 실행 과정에서 클래스 파일을 찾을 때, 클래스 패스를 기준으로 찾게 됨 클래스 패스를 지정하는 것은 프로그래머의 몫 현재 디렉토리를 기준으로 한 실행 현재 디렉토리란 명령 프롬프트 상에서 작업이 진행 중인 디렉토리의 위치를 뜻함 클래스 패스를 지정하지 않으면 자바 가상머신은 필요한 클래스를 현재 디렉토리에서 찾게 됨 그러므로 인스턴스 생성을 위해서 class의 정보를 읽어들일 때 현재 디렉토리에 클래스 파일이 위치 되어 있으므로 이를 찾아 실행하므로 문제가 발생하지 않음 하지만 클래스를 다른 디렉터리에 옮기게 될 경우, 현재 디렉토리에 클래스 파일이 존재하지 않아 오류가 발생하게 됨 class AA..
✔ 클래스의 정의와 인스턴스의 생성 클래스? 프로그램은 데이터와 기능으로 이루어짐 데이터(변수)는 프로그램상에서 유지하고 관리해야 할 '데이터'로 변수의 선언을 통해 유지 및 관리됨 변수에 저장된 데이터는 메소드의 호출을 통해 처리됨 기능(메소드)은 데이터를 처리하고 조작하는 '기능' 메소드와 변수는 뗄 수 없는 관계이며, 이렇듯 연관 있는 변수와 메소드를 묶기 위해 클래스가 존재 클래스는 인스턴스 변수와 인스턴스 메소드의 묶음 인스턴스 변수는 클래스 내에 선언된 변수로 같은 클래스 내에 위치한 메소드 내에서 접근이 가능 인스턴스 메소드는 클래스 내에 정의된 메소드 class BankAccount { int balance = 0; public int deposit(int amount) { ... } pu..