Java 객체지향

    [Java][객체지향] 인터페이스

    인터페이스 구현하기 public interface IntSequence{ boolean hasNext(); int next(); } public class SquareSequence implements IntSequence{ private int i; public boolean hasNext(){ return true; } public int next(){ i++; return i*i; } } IntSequence는 인터페이스이다. implements 키워드는 SquareSequence클래스가 IntSequence인터페이스를 따른다는 의미다. 구현하려는 클래스는 인터페이스의 메소드를 반드시 public으로 선언해야 한다. 인터페이스는 상속으로 확장이 가능하다. 인터페이스는 여러개로 구현할 수 있다.

    [Java][객체지향] 객체의 초기화

    객체 기본 초기화 생성자 안에서 인스턴스 변수를 명시적으로 설정하지 않으면 자동으로 기본값으로 설정된다. 숫자는 0, 불값은 false, 객체 참조는 null이 기본값이다. ex) name 변수를 명시적으로 설정하지 않았는데 getName()메소드를 호출하면 예상하지 못한 널 참조를 얻는다. 이럴 때 널 포인터 예외를 일으킨다. 인스턴스 변수 초기화 public class Employee{ private String name = ""; .... } 이 초기화는 객체 할당되고 생성자 실행 전에 이루어졌다. 따라서 모든 생성자는 같은 초깃값을 갖게 된다. 물론 생성자에서 초깃값을 덮어쓸 수도 있다. 이 방법 말고 클래스 선언부에 임의의 초기화 블록을 포함시키는 방법도 있다. public class Emplo..

    'Call by reference' 그리고 'Call by value'

    아규먼트 전달 방식에 두 가지 방식이 있는데 이는 call-by-value와 call-by-reference다. 자바는 언제나 Call-by-value방식이다!(단, 자료형 따라 함수호출방식 달라짐 주의) Call-by-value(값에 의한 호출) 함수로 인자를 전달할 때 전달될 변수의 값을 복사하여 함수의 인자로 전달한다. 복사된 인자는 함수 안에서 지역적으로 사용되는 local value의 특성을 가진다. 그래서 함수 안에서 인자의 값이 변경되어도 외부의 변수의 값은 변경되지 않는다. 함수가 호출될때 메모리 공간엔 함수를 위한 별도의 임시 공간(heap)이 생성된다. 함수가 종료되면 해당 공간은 사라진다. 자바에서는 함수에 전달되는 인자의 데이터 타입에 따라서 함수호출방식이 달라진다. -Primiti..