자바 I/O & NIO 네트워크 정리 3: 자바 IO

0

1. 🥠 오버라이드

객체지향 프로그래밍은 객체를 재사용함으로써 생산성을 향상시키는 것이 모적이다.
자바 IO객체들은 서로가 협력해서 원하는 작업을 처리하도록 설계되어 있다.

class Parent 2 {
int i = 7;
	public int get(){
    return i; 
    }
}
class Child2 extends Parent2{
	int i = 5;
    
    public int get(){
    	return i;
    }
}

public class ChildTest{
	public static void print(Parent2 p){
    system.out.println(p.i);
    system.out.println(p.get());
    }
}

이런 코드가 있다.

Parent2 p2 = new Child2()
system.out.println(p2.i);
system.out.println(p2.get());

정답은 7, 5 이다.


변수가 메모리에 올라가게될경우, Parent2나 Child2 둘다 올라가게 된다.
하지만 메소드가 오버라이딩 될경우, 자식의 것만 남긴다.

  • 부모는 자식을 가리킬 수 있다. 조상은 자손을 가리킬 수 있다.

  • 만약 자식이나 자손이 메소드를 오버라이딩 하고 있으면, 메소드의 기능은 자식이나 자손이 구현한것을 따른다.

Child2 c = new Child2()
system.out.println(c);
system.out.println(p2);

이것의 값은 7,5 7,5이다.

이처럼 변수는 선언된것을 따라가고 메소드는 참조된것을 따라간다.

🍔 2. 자바 IO란

자바 IO란 자바 프로그램에서의 입력작업, 출력작업을 의미한다.
읽고 쓸수 있는 클래스는 바이트 단위로 읽고 쓰는 '바이트 스트림 클래스'와
문자 단위로 읽고 쓰는 '문자 스트림 클래스'로 나뉜다.

🍟 3. 자바 IO 프로그래밍을 잘하려면

자바 API를 읽어 볼 필요가있다.

다음 문제를 살펴보자.

"키보드로부터 한줄 씩 입력받아 화면에 한 줄씩 출력하시오."

① BufferedReader의 readLine()이라는 한줄을 입력받는 메소드가 있으므로 사용한다.
② system.in 키보드로부터 입력받기 위해 무조건 사용해야 한다.
③ 화면에 출력하기 위해 사용한다.

처음에 BufferedReader 클래스를 heap메모리에 올린다.
하지만 BufferedReader의 클래스 생성자는 기본생성자가 없다.

BufferdReader = new BufferedReader(Reader객체나 Reader의 자손 활용)

Reader클래스는 추상 클래스여서 리더의 직계자손들중이 InputStreamReader를 사용하고
InputStreamReder는 인자로 InputStream을 받는다.
System.in이 InputStream이기 때문에 아래와 같은 코드가 가능하다.

InputStreamReader isr  = new InputStreamReader(System.in);
BufferedReader br = new BufferedReder(isr)
profile
쉽게 가르칠수 있도록 노력하자

0개의 댓글