Computer Language

자바 인터페이스란 인터페이스란 '같은 기준으로 구현하기 위한 기본 밑그림' 으로 보시면 됩니다. 이 밑그림 속에 객체가 어떤 추상메소드와 어떤 상수로 구성되는지를 작성합니다. 밑그림만 구성하기 때문에 인터페이스 내부 메소드에는 로직을 작성할 수 없습니다. 인터페이스의 용도 내부 로직을 구현할 수 없는데 그럼 인터페이스는 어떠한 용도로 쓰는걸까? 클래스의 틀을 제공합니다. 대규모 프로젝트 개발 시 정형화된 개발을 위한 표준화로 사용할 수 있습니다. 표준화가 되기 때문에 프로그램의 유지보수성을 높일 수 있습니다. 클래스 간의 관계를 인터페이스로 연결하면, 클래스마다 독립적으로 프로그래밍이 가능합니다. 이 말은 한 클래스의 변경이 관련된 다른 클래스에 영향을 미치지 않도록 프로그래밍이 가능하다는 의미입니다. ..
인터페이스란 인터페이스를 상속받는 다수의 서브클래스에서 같은 기준으로 구현하도록 하기위한 기본 밑그림으로 보시면 편할 것 같습니다. 인터페이스를 상속받는 서브클래스는 다수개가 될 수 있습니다. 서브클래스마다 각각의 함수로 구현을 한다면 나중에 호환이 되지 않아서 오류가 발생할 수 있습니다. 이런 오류를 방지하고자 기본틀을 만들어 주는 기능이 인터페이스 입니다. 인터페이스 구조 인터페이스 선언 시 class 명칭 대신 interface 명칭을 사용합니다. 인터페이스는 필드와 메소드를 가질수 있지만 생성자를 가질수는 없습니다. 일반적으로 인터페이스 멤버에는 어떠한 제한자도 붙이지 않습니다. 그러나 필드는 public static final, 메소드는 abstract 제한자를 붙인것과 동일하게 적용됩니다. 즉..
instanceof 연산자 객체의 클래스를 알아내는 연산자 입니다. 추상클래스를 사용하다 보면 많은 양의 서브 클래스를 다뤄야 하는 경우가 있습니다. 이럴 때 instanceof 연산자를 사용하여 어떤 서브클래스 객체를 사용하는지 알아낼 수 있습니다. instanceof 연산자를 사용하면 좌변의 변수가 가리키는 객체의 클래스가 오른쪽과 같은 클래스인지 여부를 확인할 수 있습니다. 예제 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 public class instanceofTest { public static void main(String[] args) { // TODO Aut..
추상클래스란 일반적인 방식의 객체생성 불가 일반적인 방식으로 객체를 생성할 수 없는 클래스를 의미합니다. 따라서 new 명령어로 객체 생성이 불가능합니다. 배열 방식으로의 객체 생성 위에서 '일반적인 방식'으로를 언급한 이유는 배열로는 new 연산자로 객체생성이 가능합니다. 이유는 추상클래스로 객체를 만들수는 없지만 그 클래스의 변수나 배열에 서브 클래스의 객체를 담을 수 있기 때문입니다. 추상클래스 사용방법 추상클래스를 사용하기 위해서는 클래스 명 앞에 abstract 를 명시해 주어야 합니다. 또한 추상클래스에서는 추상메소드를 사용할 수 있는데 추상메소드란 몸체가 없는 메소드를 가질 수 있는 함수를 의미합니다. 추상메소드 명 앞에는 abstract 를 명시해 주어야 합니다. 추상클래스 사용이유 그렇다..
오버로딩과 오버라이딩의 차이점 오버로딩과 오버라이딩의 개념은 다음과 같습니다. 개념 설명 오버로딩 메소드 이름이 같지만 인수의 형과 개수가 다른 메소드를 정의 오버라이딩 슈퍼클래스와 서브클래스에서 메소드이름 인수의 형 개수가 모두 똑같은 메소드를 정의 예제 코드 오버로딩 같은 메소드 명에 인자 수가 다른 메소드를 사용하는 방법입니다. 이런 경우에는 인자와 타입에 맞는 메소드가 호출됩니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public class overloadingTest { public static void main(String[] args) { // TODO Auto-generated method stub ol col = new ol(); col.s..
오버라이딩이란 자바에서는 서브클래스에서 슈퍼클래스와 완전히 동일한 메소드를 선언할 수 있는 기능이 있습니다. 오버로딩의 경우 인자 개수나 타입이 달라야 합니다. 그러나 오버라이딩의 경우는 인자 개수나 타입이 완전히 일치할 수 있습니다. 오버라이딩의 경우 메소드 호출방법 메소드의 이름과 인수의 개수 및 타입이 완전히 같은 메소드가 서브 및 슈퍼클래스에 모두 정의된 경우 서브클래스에서 새롭게 정의한 메소드가 호출됩니다. 이처럼 서브클래스의 메소드가 슈퍼클래스의 메소드를 대신하는 기능을 오버라이딩이라고 합니다. 오버라이딩 장점 같은 기능을 구현한 서브클래스에서 동일한 메소드를 사용함으로 써 코드의 복잡성과 일관성을 제공할 수 있습니다. 예제 코드 eov1 에서 매개인자가 하나인 show 함수를 호출하면 서브클..
자바 접근제한자 자바에서는 변수 접근제한을 위해 몇가지 기능을 제공하고 있습니다. 변수 선언 시 앞 부분에 명시해줌으로 써 지정할 수 있고 public, private, protected 로 접근제한이 가능합니다. 접근제한 함수 기능 접근제한 함수 기능 public 모든 곳에서 접근 가능 private 자기 자신 클래스에서만 접근 가능 protected 자기 자신 클래스와 상속된 클래스에서 접근 가능 왜 이렇게 나뉘어져 있을까? 자바는 캡슐화로써 외부에서 접근할 수 없도록 코드가 구성이 되어 있어야 합니다. public 어디에서나 접근이 가능한 접근제한입니다. 사용에는 편리하지만 public 으로 정의된 변수에는 외부코드에서도 접근이 가능하기 때문에 위험합니다. private 그렇게 해서 나온 기능이 p..
this 와 super 의 차이점 this 와 super 의 차이점은 다음과 같습니다. 함수 기능 this ( ) 그 클래스의 다른 생성자를 호출 super ( ) 슈퍼 클래스의 생성자를 호출 this 와 super 의 공통점 두 메소드 모두 생성자의 가장 윗 부분에 위치해야 합니다. 왜냐하면 생성자는 객체가 생성될 때 가장 먼저 호출되는 함수이며 this 와 super 는 생성자 호출에 사용되는 메소드이기 때문입니다. 만약 오버로딩 된 생성자를 선택해야 하는 경우 this 또는 super 에 호출하길 원하는 생성자의 인수를 대입하면 됩니다. 예제 코드 B1 클래스의 객체를 생성합니다. A1 클래스를 상속받았기 때문에 A1의 생성자가 먼저 호출이 됩니다. 21 번째 줄에 super 를 명시해 두긴 했지만..
슈퍼클래스와 서브클래스 슈퍼클래스와 서브클래스는 상속의 기능으로 연결되어 있습니다. 베이스가 되는 클래스를 슈퍼클래스, 슈퍼클래스의 멤버와 메소드를 전달받아 사용할 수 있는 서브클래스 입니다. 서브클래스의 super 메소드 서브클래스는 슈퍼클래스의 메소드를 사용할 수 있다보니 생성자또한 사용할 수 있습니다. 그렇지만 서브클래스의 객체를 만들때는 슈퍼클래스의 객체를 따로 생성하지 않습니다. 그렇다면 슈퍼클래스의 생성자가 여러개인 경우 어떻게 호출을 해야할까요? super 메소드 서브클래스에서 super 메소드를 사용해서 슈퍼클래스의 생성자를 사용할 수 있습니다. 서브클래스의 super 메소드의 인자에 따라 슈퍼클래스의 생성자가 다르게 호출됩니다. 참고로 super 메소드는 생성자를 호출하는 기능이기 때문에..
상속이란 새로 확장된 클래스가 기존 클래스의 멤버를 물려받는 것을 상속이라고 합니다. 상솓받은 클래스는 기존 클래스의 멤버를 물려받아 동작하게끔 되어 있습니다. 상속을 사용하는 이유 서브클래스에서는 상속받은 멤버와 추가된 멤버를 모두 같은 방법으로 호출할 수 있습니다. 이해가 안되시는 분들은 아래의 예제 코드를 참고해 주세요. 이처럼 클래스를 확장하면 이미 설계된 클래스를 바탕으로 새로운 클래스를 보다 효율적으로 만들 수 있어 결과적으로 전체 프로그램의 작성 능률을 높일 수 있습니다. 예 자동차의 기능을 정의하는 클래스가 있습니다. 이 때 특수한 자동차인 경주용 차의 클래스를 생성하려고 합니다. 경주용 차는 자동차의 일종이므로 많은 공통점을 가지고 있습니다. 따라서 자동차 클래스를 바탕으로 경주용 차 클..