필기1
클래스의 구성요소: 필드, 메소드
정보은닉: private
오버로딩: 이름만 같고 시그니처
오버라이딩: 부모에게 상속받은 함수를 재정의
public void f(); 추상메소드
상속
인스턴스를 생성할 수 없는 클래스: 추상클래스
인스턴스를 생성하지 않고 메소드를 사용할 수 있다: static
상속관계 extends
인터페이스 관계 implements
필기2
1. 클래스를 정의하시오.
클래스는 사용자 정의 자료형이다. 이름을 붙일 때는 대문자로 시작한다.
클래스는 멤버변수(필드)와 멤버함수(메소드)로 구성되어 있고,
별도로 정의하지 않는다면 생성자가 있다.
사용자가 정의한 클래스를 자료형으로 변수를 선언하면
new 생성자를 통해 인스턴스를 만들어줄 수 있다.
만약 Test라는 클래스를 정의하고 인스턴스를 만든다면 아래와 같이 사용한다.
Test t = new Test();
만약 생성자를 정의해준다면 그 생성자에 맞게 작성해야 한다.
public Test(String a){ ...생략...}; 과 같이 클래스에 생성자를 선언해주었다면,
Test t = new Test(string)으로 인터페이스를 만들어주어야 한다.
흔히 클래스를 붕어빵틀, 인스턴스를 붕어빵에 비유하기도 한다.
클래스에는 멤버변수, 멤버함수, 생성자 외에도 흔히 getter와 setter함수가 있는데,
getter는 멤버변수의 값을 외부에서 필요로 할 때 제공해주는 역할을 하고
setter는 멤버변수의 값을 외부에서 설정할 때 사용한다.
정보은닉을 목적으로 멤버변수를 private선언해주었을 때, 외부에서 getter와 setter로 접근할 수 있다.
2. 배열을 정의하시오.
배열이란 같은 자료형의 값들을 연속된 공간에 저장하는 것을 의미한다.
예를 들어 int형의 변수 1, 2, 3을 여러 개 한 번에 관리하고 싶다면
int[] arr = new int[3]과 같이 선언하여 arr[0]에 1, arr[1]에 2, arr[2]에 3을 저장하여 관리할 수 있고
배열의 인덱스는 0부터 시작한다.
int[] arr 만 선언했다고 해서 배열이 만들어 지는 것이 아니라, 실질적인 배열을 만들어 주소를 지정함으로써 사용할 수 있다.
자료형을 통해 선언하므로 클래스의 형태로도 배열을 만들 수 있다.
3. 참조변수를 정의하시오.
1번에서 예시로 본 Test t = new Test();에서 인스턴스에 접근하기 위해 사용하는 변수 t가 참조변수이다.
참조변수는 주소를 저장한다. 따라서 참조변수는 값을 저장하는 인스턴스를 가리키고 있다.
t를 통해서 생성된 클래스 내부의 t.name, t.age와 같이 멤버변수나 t.getA(), t.setA()와 같이 멤버함수에 접근할 수 있다.
실기
3개의 파일을 보고 에러가 난 부분 수정하기.
끝
package ex0409;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class ZenericTest {
public static void main(String[] args) {
// 한영사전 만들기
Scanner sc = new Scanner(System.in);
String kor;
String eng;
int iflag;
Map<String, String> directory = new HashMap<>();
System.out.println("[안내] 사전 등록을 시작합니다.");
while(true) {
System.out.print("한글을 입력하세요. > ");
kor = sc.next();
System.out.print("영어를 입력하세요. > ");
eng = sc.next();
directory.put(kor, eng);
System.out.println("[메뉴] 종료:0, 추가등록:1, 사전조회:2");
iflag=sc.nextInt();
if(iflag==0) break;
else if(iflag==1) {
System.out.println("[안내] 추가 등록을 시작합니다.");
continue;
}
else {
System.out.print("검색하고 싶은 한글 단어를 입력하세요 > ");
kor=sc.next();
if(directory.containsKey(kor)) {
System.out.println(kor+"은/는 영어로 "+directory.get(kor)+" 입니다.");
System.out.println("[안내] 사전을 종료합니다.");
break;
}
else
System.out.println("[안내] 사전에 저장되어 있지 않은 단어입니다. 추가 등록 바랍니다.");
}
}
}
}
