2021.11.13 TIL

서승원·2021년 11월 12일
0

TIL

목록 보기
18/68

Object
특별한 명시를 하지 않으면 모든 class 들의 조상class가 될 수 있다. 즉 모든 인스턴스를 가리킬 수 있다.
Object t = new Temp(); 와 같이, Temp라는 자손class를 취해 인스턴스를 생성한다.
다음과 같이 인스턴스를 가리키는 참조형 변수가 만들어진다. 당연히 Object를 조상 class로 삼은 class 들은 Object에 정의돼있는 method들을 사용할 수 있다. 그중 toString, equals, instanceof 를 살펴보았다.

  • toString
    toString은 클래스명과 인스턴스 고유의 번호를 출력한다. 위의 경우를 예로들어
    Temp@29378 와 같은 형태이다. 클래스가 같고, 멤버 변수도 같은 겉으로 보기에 같아보이는 instance일지라도 기억공간에 따라 다른 고유번호가 출력된다.
    toString을 overriding 하여 인스턴스의 한줄의 요약과도 같이 사용하기도 하는데,
    void public toString(){
    return "Over";
    }
    와 같이 오버라이딩 해주면, toString의 값이 Over가 되며 참조형변수 t를 이용해 t.toString(); 으로 호출했을 때 출력된다. 이는 void print(){print(Objext X);} 와 같이 인스턴스 자체를 매개변수로 하여도 toString을 호출해서 출력하게 된다.
  • equals
    equal는 인스턴스의 내용, 즉 멤버변수가 아닌 그 자체가 같은 인스턴스인지, toString() 호출값이 같은지 를 판별하는 method이다. 만약 toString()을 오버라이딩하여 문자열이나, 임의의 값으로 같게하여도 equals 에서는 false값이 출력되게 된다.
  • instanceof
    instanceof 는 참조형 변수 instanceof class 와 같이 사용하며 [참조형변수] 가 가리키는 대상이 [class] 로 캐스팅 가능한가 를 판별하는 method이다.

    위와 같이 사용하면 참조형변수 t, t2 가 class B로 캐스팅 가능한가 라는 method가 되고, t는 A가 B의 조상형변수라면 true가 출력될 것이고, t2는 class B를 가리키며 인스턴스를 생성했으므로, true가 출력될 것이다.

접근지정자
접근지정자는 멤버 변수, 함수 앞에 붙어 은닉성, 접근성에 대한 정보를 부여한다.
3가지 private, protected, public이 있다. 그리고 지정하지않은 변수와 함수들은 default값으로 friendly 로 지정된다.

각 지정자별로 위와 같이 상속과 접근에 대해 접근성을 띈다.

Abstract class
Abstract class 란 형태는 존재하지만 인스턴스를 생성할 수 없는 class를 말한다.
Abstract Method는 형태는 존재하지만 정의할 수 없는 Method를 말하는데, Abstract method를 포함한 class 는 반드시 abstract class 여야 한다.

위와 같이, abstract class Temp 에서 print라는 abstract method가 정의되면 그 자손 class Temp에서 print를 오버라이딩해서 사용한다. 오버라이딩하지 않으면 abstract 하지 않은 class에서 abstract method를 정의했기 때문에, 에러가 나게 된다.
null을 가리키는 함수를 가지면 인스턴스를 생성할 수 없다.

profile
2년차 백엔드 개발자, crimy

0개의 댓글