객체간 형변환
1 | 다음 설명 중 맞는 것을 모두 고르면? (1)자바의 기본 자료형간의 형변환은 같은 종류에 상관없이 모두 가능하다. X // boolean 은 왕따 (2)작은 자료형이 큰 자료형으로 형변환 되어질때는 데이터의 손실이 발생한다. X // 자동형변환 (3)큰 자료형이 작은 자료형으로 형변환 되어질때는 데이터의 손실이 발생하므로 프로그래머가 강제형 변환을 명시해야 한다. O (4)작은자료형에서 큰자료형으로의 형변환을 promotion 이라 하고, 그 반대의 경우를 demotion이라 한다 O |
2 | 다음 설명 중 틀린 것을 모두 고르면? (1) 자바의 자료형은 기본자료형 이외에 객체자료형이 존재한다. O (2) 자바의 기본 자료형은 같은 종류별로 분류가 가능하지만(예 숫자형간) 객체자료형은 같은 종류라는 개념이 존재할 수 없기 때문에, 형변환이란 기법은 객체자료형에는 적용되지 않는다. X 상속을 이용하면 객체자료형도 같은 종류의 자료형으로 정의할 수 있다. 자식이 부모로부터 상속받아서 끌어다가 쓸 수 있음! 만약에 자식에 매개변수가 있다면 부모꺼를 받아오진 않음! 범위를 생각해야함 (3) 상속관계에 있는 클래스들은 서로 같은 종류의 데이터 타입으로 간주되어 상,하위 객체간 Casting이 가능하다. O (4) 자식 자료형에서 부모자료형으로의 형변환을 UPCasting이라 한다. O (5) 부모 자료형에서 자식 자료형으로의 형변환을 UPCasting이라 한다. X DownCasting (6) 부모자료형에서 자식자료형으로 형변환시 데이터 손실이 발생한다. X |
3 | 1) 옆집강아지, 앞집강아지, 옆동네 강아지, 친구네 강아지를 한마디로 가리킬 수 있는 말 ( ) 2) 전선줄에 앉아 있는 오리,참새 가리킬 수 있는 말 ( ) 일상 생활에서 수많은 대상을 가장 편안하고 폭넓게 가리킬 수 있는 방법은 그 객체의 상위객체로 가리키면 되는데, 이와 같이 상위에 존재하는 하나의 데이터 타입으로 여러 객체들을 가리킬 수 있는 기법을 OOP에서는 ( ) 즉 polymorphism 이라 한다. |
4 | 다음 설명 중 맞는 것은? class Bird{ String name="난 그냥새"; } class Duck extends Bird{ is a String name="난 오리"; } class Test{ public static void main(String[] args){ Bird b1=new Bird(); (A) // 난 그냥새? Duck dk=new Duck(); (B) Bird bird=dk; (C) int x = 3; byte b= 8; x = b; //자료형이 맞지 않아 연산수행 못하기 때문에, b를 int로 바꿔버린다..자동 형변환.. Duck d=(Duck)bird; (D) System.out.println(d.name);(E) } } (1) (A)에서 메모리에 올라가는 인스턴스는 Duck 과 Bird 이다. X Bird만 인스턴스로 올라감 (2) (B)에서 Duck 클래스가 올라가기 전에 Bird 클래스가 먼저 메모리에 올라가게 되어 있다. O (3) (C)에서 dk 를 레퍼런스할 수 있는 자료형은 Duck 형임에도 불구하고 Bird 형으로 레퍼런스하고 있으므로 오류가 날 것이다. X (4) (D)는 부모자료형인 bird를 자식자료형인 Duck으로 강제 형변환을 시도한 것이며 이러한 형변환을 업케스팅이라 한다. X down (5) (E)에서의 출력결과는 "난 그냥새"가 출력된다. X 난오리 |
5 | 상속에 대한 설명 중 틀린 것은 ? (1) 상속관계에 있는 클래스들간에는 같은 종류의 자료형으로 본다. O (2) 자바의 기본자료형간 발생하는 형변환에서는 데이터의 손실이 발생할 수도 있지만, 자바의 객체 자료형간 발생하는 형변환은 레퍼런스가 가리킬 수 있는 범위의 문제이므로, 데이터의 기본자료형 간의 형변환과는 차이가 있다. O (3) 부모클래스 Bird에 name이란 멤버변수가 존재하고 자식클래스인 Duck 에도 name 이란 멤버변수가 존재할때 Duck의 name 변수는 Bird의 name 변수로 대체되어 버린다. X (4) 상속은 is a 관계로 표현할 수 있다. O |
6 | 다음 설명 중 틀린 것은 ? (1) 하나의 클래스내에 메서드명을 중복정의 할 수 있는 기법을 오버로딩이라 한다. O / 아예 똑같으면 안됨! 매개변수가 달라야함 (2) 생성자도 메서드이므로 생성자 오버로딩이 가능하다 O (3) 부모클래스에 이미 정의된 메서드명을 자식클래스에서 중복 정의하면 에러가 발생한다. X / 업그레이드 오버라이딩 (4) 부모클래스의 메서드를 오버라이딩 하려면 메서드명 뿐만 아니라 인수의 갯수 자료형까지 똑같이 해야 한다. O |
7 | 다음 설명 중 맞는 것은? class Animal{ String name="난동물"; public Animal(String n){ (C) name=n; } public Animal(){ (D) } } class Tiger extends Animal{ String name="난호랑이"; public Tiger(){ } public Tiger(String n){ name=n; } } class UseAnimal{ public static void main(String[] args){ Tiger t1=new Animal(); (A) Animal a1=new Tiger(); (B) System.out.println(a1.name); (E) } } (1) (A)는 다형성을 이용한 코드이므로 정상적인 컴파일이 될 것이다. X 오류 부모를 자식으로 가리킴 (2) (B)에서 실질적으로 메모리에 올라간 인스턴스는 Tiger 뿐이다. X animal (3) (B)에서 new 연산자뒤의 생성자가 잘못된 방법으로 호출되고 있다. X (4) (B)에 의해 호출되는 부모의 생성자는 (C) 생성자이다. X (5) (E)에서 출력되는 결과는 "난 동물" 일 것이다. O 오버라이딩 메서드만 그렇다 |
8 | 다음 설명 중 맞는 것은? class Plant{ String name="난 식물"; public void grow(){ System.out.println("식물이 자랍니다."); } } class Flower extends Plant{ is a String name="난 꽃"; public void grow(){ System.out.println("꽃이 자랍니다."); } } class UsePlant{ public static void main(String[] args){ Plant p1=new Plant(); (A) System.out.println(p1.name); (B) 난 식물 Plant p2=new Flower(); (C) System.out.println(p2.name); (D) 오버라이딩 메서드만 예외 / 다형성 자식호출 p2.grow(); (F) } } (1) (A)라인에 의해 Plant의 인스턴스뿐 아니라 Flower의 인스턴스도 메모리에 올라간다. X (2) (B)에서 출력되는 결과는 "난 꽃" 이다. X 난 식물 (3) (C)라인에 의해 메모리에 올라가는 인스턴스는 Flower 뿐이다. X Plant (4) (D)에서 출력되는 결과는 "난 꽃" 이다. X 난 식물 (5) (F)의 메서드 호출에 출력되는 결과는 "꽃이 자랍니다." 이다. O |
'빅데이터UI전문가 > JAVA' 카테고리의 다른 글
[JAVA] 빅데이터UI전문가 - day10 String (0) | 2021.08.24 |
---|---|
[JAVA] 빅데이터UI전문가 - day10 추상클래스 (0) | 2021.08.24 |
[JAVA] 빅데이터UI전문가 - day9 11.Is a와 Has a (0) | 2021.08.23 |
[JAVA] 빅데이터UI전문가 - day08 생성자 (0) | 2021.08.20 |
[JAVA] 빅데이터UI전문가 DAY08 - 오버로딩 (0) | 2021.08.20 |