School/Java Programming
Java Programming - Interface
자바에서 인터페이스는 객체의 사용 방법을 정의한 타입입니다. 인터페이스는 객체의 교환성을 높여주기 때문에 다형성을 구현하는 매우 중요한 역할을 합니다. 인터페이스 인터페이스는 객체 사용 설명서이므로 런타임 시 데이터를 저장할 수 있는 필드를 선언할 수 없습니다. 그러나 상수 필드는 선언이 가능합니다. 상수는 인터페이스에 고정된 값으로 런타임 시에 데이터를 바꿀 수 없습니다. 상수를 선언할 때에는 반드시 초기값을 대입해야 합니다. 추상 메소드는 객체가 가지고 있는 메소드를 설명한 것으로 호출할 떄 어떤 매개값이 필요하고, 리턴 타입이 무엇인지만 알려준다. 디폴트 메소드는 인터페이스에 선언되지만 사실은 객체(구현 객체)가 가지고 있는 인스턴스 메소드..
Java Programming - Inheritance
상속은 이미 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 코드의 중복을 줄인다. 상속을 해도 부모 클래스의 모든 필드와 메소드를 물려받는 것은 아니다. 부모 클래스에서 private접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외된다. 그리고 부모 클래스와 자식 클래스가 다른 패키지에 존재한다면 default 접근 제한을 갖는 필드와 메소드도 상속 대상에서 제외된다. 그 이외의 경우는 모두 상속의 대상이 된다. 부모 생성자 호출 부모 객체가 먼저 생성되고 자식 객체가 그 다음에 생성된다. 아래 코드는 DmbCellPhone 객체만 생성하는 것처럼 보이지만. 사실은 내부적으로 부모인 CellPhone 객체가 먼저 생성되고. DmbCellPhone객체가 생성된다.] DmbCellPhone d..
Java Programming - Class
정적 멤버와 static 정적은 '고정된'이란 의미를 가지고 있다. 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. 정적 멤버는 객체에 소속된 멤버가 아니라 클래스에 소속된 멤버이기 때문에 클래스 멤버라고도 한다. 정적 필드와 정적 메소드는 클래스에 고정된 멤버이므로 클래스 로더가 클래스 ( 바이트 코드 )를 로딩해서 메소드 메모리 영역에 적재할 떄 클래스별로 관리한다. 따라서 클래스의 로딩이 끝나면 바로 사용할 수 있다. 이를 사용해야 하는 경우는 원의 넓이나 둘레를 구할 떄 파이는 Calculator 객체마다 가지고 있을 필요가 없즌 변하지 않는 공용적인 데이터이므로 정적 필드로 선언하는 것이 좋다. 그러나 객체별로 색깔이 다르다면 색깔은 인스턴스 ..
Java Programming - Array
본 Java Programming 글은 이것이 자바다를 기반으로 작성하였음을 명시합니다. 객체를 참조하는 배열 public void Array1() { String[] strArray = new String[3]; strArray[0] = "Java"; strArray[1] = "Java"; strArray[2] = new String("Java"); System.out.println(strArray[0] == strArray[1]); // true ( 같은 객체를 참조 ) System.out.println(strArray[0] == strArray[2]); // false ( 다른 객체를 참조 ) System.out.println(strArray[0].equals(strArray[2])); // tru..