[Java] toString
·
TIL/Java
toString toString은 객체를 문자로 표현하는 메소드이다. 이전에 사용했던 계산기 코드를 활용하여 toString을 살펴보자. 23행의 코드는 클래스 Calculator의 인스턴스 c1을 화면에 출력하고 있다. 출력 결과는 콘솔 창과 같으며, @ 뒤의 내용은 각자 다르다. 'ObjectClass.Calculator'은 인스턴스 c1이 클래스 Calculator의 인스턴스라는 의미이며, @ 뒤의 내용은 인스턴스에 대한 고유한 식별 값이라고 생각하면 된다. 클래스 설계자의 필요에 따라서 toString의 결과를 더욱 유용하게 만들 수 있다. 예를 들어 계산기의 인스턴스의 left와 right 값을 알 수 있다면 좀 더 편하게 할 수 있을 것이다. 아래 코드는 클래스 Calculator에 toStr..
[Java] finally
·
TIL/Java
finally finally는 try 구문에서 예외가 발생하는 것과 상관없이 언제나 실행되는 로직이다. 기본구조 try { 예외의 발생이 예상되는 로직 } catch(예외클래스 인스턴스) { 예외가 발생했을 때 실행되는 로직 } finally { 예외여부와 관계없이 실행되는 로직 } finally는 예외와는 상관없이 반드시 끝내줘야 하는 작업에 사용이 된다.(ex. 데이터베이스 접속을 끊는 작업) 접속을 끊는 작업은 예외 발생여부와 상관없기 때문에 finally에서 처리하기에 좋은 작업이라고 할 수 있다. 즉, finally는 작업의 뒷정리를 담당한다고 볼 수 있다. ps. 예외 관련한 글은 아래 링크를 통해 확인하자 https://yelin1217.tistory.com/61 [Java] 예외(Excep..
[Java] 다형성(Polymorphism)
·
TIL/Java
다형성(Polymorphism) 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미한다. Overloading과 다형성 오버로딩은 가장 이해하기 쉬운 다형성의 예라고 할 수 있다. 아래의 코드를 살펴보자 클래스 O의 메소드 a는 두개의 본체를 가지고 있으며, 동시에 두개의 본체는 하나의 이름인 a를 공유하고 있다. 같은 이름이지만 서로 다른 동작 방법(매개변수)을 가지고 있기 때문에 오버로딩은 당형성의 한 예라고 할 수 있다. 클래스와 다형성 아래 코드는 클래스 B의 데이터 형이 클래스 A이다. 클래스 B는 클래스 A를 상속하고 있으며, 이런 경우에는 클래스 B는 클래스 A를 데이터 형으로 삼을 수 있다. 아래 코드를 살펴보면 19행에 에러가 발생한다. 즉, object.x()..
[Java] 인터페이스(interface)
·
TIL/Java
인터페이스(interface) 인터페이스 역할은 어떤 클래스(객체)가 있고 그 클래스가 특정한 인터페이스를 사용한다면 그 객체는 반드시 인터페이스의 메소드들을 구현해야 한다. 인터페이스와 상속은 다르다. 상속이 상위 클래스의 기능을 하위 클래스가 물려 받는 것이라고 한다면, 인터페이스는 하위 클래스에 특정한 메소드가 반드시 존재하도록 강제한다. 클래스를 선언 할 때는 class를 사용하지만 인터페이스는 interface를 사용한다. 상속은 extends를 사용하지만 인터페이스는 implements를 사용한다. 간단한 코드를 통해 살펴보자 클래스 A 뒤의 implements I는 이 클래스가 인터페이스 I를 구현하고 있다는 의미다. 그것은 3행의 interface I의 맴버인 public void z() ..
[Java] abstract
·
TIL/Java
abstract abstract는 한국어로는 추상으로 번역되며, 상속을 강제하는 일종의 규제라고 생각하면 된다. abstract 클래스나 메소드를 사용하기 위해서는 반드시 상속해서 사용하도록 강제하는 것이며, abstract는 구체적인 로직을 가지고 있으면 안된다. 멤버 중에 하나라도 abstract라고 한다면 클래스도 자동으로 abstract로 바뀌며, abstract 클래스는 추상 메소드 뿐만 아니라 일반 메소드도 가질 수 있다. 그렇다면 abstract는 왜 쓰는 것일까?? 부모 클래스에는 메소드의 시그니처만 정의해놓고 그 메소드의 실제 동작 방법은 이 메소드를 상속 받은 자식 클래스의 책임으로 위임하기 위해서이다. abstract는 작은 규모의 프로젝트에서는 거의 작성하는 경우는 없다고 한다. 아..
[Java] 패키지
·
TIL/Java
packages.example1 패키지 안에는 A, B라는 java 파일이 있고 packages.example2 패키지 안에는 B, C라는 java 파일이 있다. A와 B 클래스의 코드는 아래 사진과 같다. packages.example2 패키지 안에 있는 B 클래스에 있는 main 메소드를 실행시키면 에러가 발생한다. 그 이유는 packages.example2 패키지 안에 A 클래스가 없기 때문이다. 이러한 에러를 해결하기 위해서는 import를 사용하여 A 클래스가 있는 패키지 경로를 넣으면 된다. 다음은 에러가 발생할 수 있는 상황에 대해서 언급해 보려고한다. packages.example3 패키지 안에 D 라는 클래스가 있다. D 클래스 main 메소드에서 B를 인스턴스화를 시키려고 하는데 exa..