Language/Java56 instanceof 연산자 instanceof 연산자 어떤 객체에 대한 is-a 관계를 판별하는 연산자 주로 if문을 사용하여 형변환이 가능한 지 여부를 판별하는 용도로 사용 연산자 좌변에는 판별에 필요한 객체의 레퍼런스 변수를 지정하고 연산자 우변에는 is-a 관계 판별에 사용될 클래스명을 지정 좌변의 객체가 우변의 클래스 타입으로 형변환이 가능하지 여부 판별 A is a B 에 대한 판별 문법 A instanceof B 형태로 사용 (A : 객체의 레퍼런스 변수명, B : 클래스명 instaceof 연산 결과가 true 이면 형변환 가능 (업 or 다운캐스팅) false 이면 어떤방법으로든 형변환 불가 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 2.. 2020. 6. 9. 캐스팅 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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 public class Ex { public static void main(String[] args) { // 인스턴스 생성후 메서드 ㅗ출 Circle c = new Circle(); Rectangle r = new Ractangle(); Triangle t = new Triangle(); c.draw(); r.draw(); t.draw(); // 업캐스팅.. 2020. 6. 9. 레퍼런스(참조형) 형변환 레퍼런스(참조형) 형변환 - 어떤 객체를 다른 타입으로 변환하는 것 (슈퍼클래스타입 서브클래스타입) - 업캐스팅(Up Casting) 과 다운캐스팅 (Down Casting) 으로 구분됨 1. 업캐스팅(Up Casting) - 슈퍼클래스 타입 레퍼런스로 서브클래스의 인스턴스를 참조하는 것 = 서브클래스의 인스턴스를 슈퍼클래스 타입으로 변환 하는것 - 컴파일러에 의해 자동 형변환 일어남(= 묵시적 형변환) - 참조 가능한 영역이 축소됨 - 서브클래스 인스턴스의 멤버 중 공통 항목을 제외한 나머지에 대한 포기 선언을 하는 것 = 대신, 하나의 슈퍼클래스 타입으로 여러 서브클래스 인스턴스를 참조할 수 있다! 2. 다운캐스팅(Down Casting) - 서브클래스 타입 레퍼런스로 슈퍼클래스의 인스턴스를 참조하는.. 2020. 6. 5. 생성자 super() 생성자 super() -슈퍼클래스의 생성자를 명시적으로 호출 목적1) 슈퍼클래스의 생성자 중 특정 생성자를 명시적으로 호출해야하는 경우 사용 ex) 슈퍼클래스에 기본생성자 없이 파라미터 생성자만 정의할 경우 서브클래스에서 슈퍼클래스의 기본생성자를 호출하지 못해 오류 발생 이 때, 슈퍼클래스의 파라미터 생성자를 명시적으로 호출할 때 사용 목적2) 슈퍼클래스의 생성자에서 초기화하는 코드가 존재할 경우 ex) 서브클래스의 생성자에서 슈퍼클래스의 멤버변수까지 초기화하면 코드 중복 발생 이 때, 슈퍼클래스의 멤버는 슈퍼클래스의 생성자에서, 서브클래스의 멤버는 서브클래스의 생성자에서 초기화하여 중복을 제거하기 위해 사용 주의! 생성자 super() 는 반드시 생성자 내에서 첫번째 문장으로 실행되어야 한다 => 생성.. 2020. 6. 5. 레퍼런스 super 메서드 오버라이딩 뿐만 아니라 멤버변수도 오버라이딩이 가능하다. 즉, 메서드도 덮어쓸 수 있지만, 멤버변수도 덮어쓸 수 있다. 레퍼런스 super - 슈퍼클래스의 멤버에 접근하기 위한 키워드(=레퍼런스 변수) - 레퍼런스 this 와 동일하나 슈퍼클래스 인스턴스 주소가 저장되어 있는 점이 다르다. =레퍼런스 this는 자신의 인스턴스 주소가 저장되어 있음 - 주로 오버라이딩에 의해 은닉된 변수 또는 메서드에 접근해야할 경우 사용 (자신의 멤버 : this.XXX , 부모의 멤버 : super.XXX) - 슈퍼클래스와 서브클래스, 서브클래스의 메서드 내에 동일한 이름의 변수가 존재할 때 탐색 과정 - 현재 호출된 곳을 기준으로 가장 가까운 곳부터 점차 탐색 범위를 넓혀가면서 탐색 (ex. 로컬변수 -> 멤.. 2020. 6. 5. 접근제한자 - 특정 멤버에 대한 접근 범위를 제한하는 키워드 - 클래스, 메서드, 변수에 사용 가능 public : 모든 클래스에서 접근 가능 protected : 같은패키지 또는 패키지가 다르더라도 상속 관계인 서브클래스에서는 접근 가능 default(package) : 같은 패키지 내에서 접근 가능 (접근제한자를 지정하지않으면 기본값으로 default 가 선언됨) private : 자신의 클래스에서만 접근 가능(외부클래스에서 접근 불가) 주의! 상속관계에 있더라도 인스턴스를 생성하여 접근하게되면 상속관계의 접근이 아닌 일반 클래스 관계 취급됨 접근제한자 같은클래스 다른패키지 다른패키지 상속관계 전체 public O O O O protected O O O X default(package) O O X X priva.. 2020. 6. 5. 이전 1 2 3 4 5 6 7 8 ··· 10 다음