관심있는 주제/Java 26

object class

object라는 클래스가 있는데 이 클래스는 우리가 당연하게 사용하는 int, String, 등등의 메소드를 포함한다.아래처럼 자바 오라클 홈페이지에서 확인할 수 있다.예시로 toString , equals 를 살펴보려고 한다. - toStringtoString은 말 그대로 to String 하는 메소드라고 이해하면 될 것 같다. 예제를 살펴보자이런 예제가 있을 때 우리가 h를 출력해 본다면 알아볼 수 없는 주소값이 나온다.따라서 안에 어떤 값이 들어가 있는지 확인하기가 어렵다. 이것을 재정의하여 눈에 보이게 만드는 것이 toString (오버라이딩) 이라고 이해하면 될 것 같다. toString을 하는 방법은 source -> Generate toString이다.저걸 누르고 변수를 선택하면 알아서 기본..

예외(try, catch, final)

예외 처리를 하는 방법에는 try-catch 가 있다.try : 예외가 뜨지 않았을 때 실행할 부분catch : 예외가 떴을 때 실행할 부분으로 보면 쉬울 것 같다. 위 예제를 보면 int[] array가 있고 그 값을 Scanner를 사용해서 직접 입력받고 있다.만약 int 어레이에 정수값이 아닌 "가나다"를 넣으면 예외가 발생할 것이다.그것을 잡아주는 것이 저 catch 라고 생각하면 된다.catch(예외상황) 에서 예외상황은 상황마다의 메세지가 각 다른데 그거는 구글로 서치해보면서 찾으면 된다. (아니면 아예 예외를 발생시켜서 뜨는 메세지로 확인할 수 있다. 효율적인지는 잘 모르겠다.) 마지막으로 finally 라는 것이 있는데, 이것은 예외가 발생하던 안하던 실행시키도록 하는 애 라고 보면 된다.

인터페이스(interface)

인터페이스 안의 메소드를 반드시 구현하도록 강제할 수 있다.추상과 비슷한 느낌지만 인터페이스는 반드시 본체가 없는 메소드만 포함할 수 있다.인터페이스가 다른 인터페이스 상속 가능한 클래스에서 여러 인터페이스 구현 가능 구조를 보면,interface {methodA;methodB;}class sth implements sth{methodA(){body}methodB(){body}} 이런 식으로 나와있다. 즉 추상처럼 interface 안에 있는 메소드를 오버라이드 시켜줘야 한다. 인터페이스를 이용한 예제이다.Jake 는 노란색이고 Rainycon 을 좋아한다.Finn 은 흰색이고 Bubble gum을 좋아한다.각각의 특징을 가지고 인터페이스를 만든 뒤Finn, Jake 클래스에 인터페이스를 구현해 주었다...

final

final : 상속이나 변경을 금지하는 규제 한번 설정한 값을 변경하지 못하게 한다.final이 붙은 변수를 수정하려고 하면 아래와 같이 final 을 지우라는 오류가 뜬다.수정되면 안되는 변수, 메소드 또는 클래스에 붙이면 된다. 메소드에 final이 붙으면 오버라이딩 불가능하다.(오버라이딩은 다시 재정의 한다는 의미이니 final 이 붙은 변수에서는 오버라이딩을 할 수 없다.)클래스에 final이 붙으면 상속 불가능하다.

public, private

public : 속해 있는 class 밖에서도 사용할 수 있다. (클래스를 인스턴스화 하면)private : 속해 있는 class 밖에서 사용할 수 없다. public 과 private을 통해서 내가 접근을 제어시킬 수 있다고 보면 될 것 같다.예를 들어,저기서 String을 public으로 해도 private으로 해도 메인에서 잘 출력이 된다.나는 private을 통해서 사용자가 저 String A,B에 접근하는 것을 통제할 수 있다. 만약 통제하지 않으면 이런 식으로 다른 클래스에서 A,B값을 변경할 수 있다.

class 와 package

같은 package 안에 같은 이름의 class가 있다면 저렇게 에러가 뜬다. (The type Second is already defined) (다른 package에 있는 class는 이름이 같아도 상관이 없다.) cmd 창에서 디렉토리를 확인해봤다. package가 다르면 다른 폴더에 들어가 있다.즉 서로 다른 package에서는 class의 이름이 겹쳐도 다른 애로 인식을 한다는 것을 알 수 있다. 궁금해서 같은 package에 있는 다른 class file 에 있는 메소드를 불러와 봤다.무리 없이 출력이 된다. 그렇다면 다른 package에 있는 class를 불러오려면 어떻게 해야 할까? test123456789 라는 package 의 class test0000안에 있는 main 메소드를 불러오고..

오버로딩(over loading)

자바는 메소드의 이름이 같아도 변수의 타입이나 수가 다르면 다른 메소드로 인식한다. 이런 것이 오버로딩의 개념이다. 이런 식으로 변수가 2개 ,3개인 메소드를 만들어 놓은 뒤, 하나의 함수를 실행했을 때 알아서 변수의 수에 맞는 값을 출력해 준다.이런 것을 오버로딩이라고 한다. 이때 중복을 피하고 싶으면 Setter(String A, String B, String C) 안에this.A = A; 와 this.B = B; ===> this.Setter(String A, String B) 라고 적어주면 된다. 오버로딩도 오버라이딩처럼 자식 클래스가 우선적으로 출력이 된다. 즉 같은 이름과 변수를 가진 함수가 있다면 자식 클래스의 함수를 출력한다.그리고 위 예제에서 볼 수 있듯 메소드의 이름이 같아도 변수가 다..

오버라이딩(overriding)

오버라이딩은 '재정의'라는 뜻으로 상속과 밀접한 관계가 있는 개념이다.오버라이딩은 부모 클래스가 갖고 있는 메소드를 물려받기는 하지만 그것을 그대로 사용하지 않고 자식 클래스의 필요에 따라 재정의하여사용하는 것을 말 한다. 부모 클래스에 있는 Info()라는 메소드를 자식 클래스에서 재정의하여 사용하였다. 메인에서 Info()를 불러오면 우선적으로 자식 클래스의Info() 를 불러온다. 이런것을 오버라이딩이라고 한다. 이때 오버라이딩 하려는 메소드의 반환타입이 같아야만 한다. 부모 클래스에서 void였는데 자식 클래스에서 String이라면 에러가 발생한다.(아래 처럼)이렇듯 오버라이딩을 위한 조건이 총 3가지 있다. 1. 메소드의 이름 일치 2. 메소드의 변수 개수와 데이터 타입 , 순서의 일치3. 반환..