이세개발
1. 자바의 상속에 대한 설명 중 틀린 것은 무엇입니까?


1. 자바는 다중 상속을 허용한다.     // (X)
2. 부모의 메소드를 자식 클래스에서 재정의(오버라이딩)할 수 있다.     // (O)
3. 부모의 private 접근 제한으르 갖는 필드와 메소드는 상속의 대상이 아니다.     // (O)
4. final클래스는 상속할 수 없고, final 메소드는 오버라이딩할 수 없다.     // (O)








2. 클래스 타입 변환에 대한 설명 중 틀린 것은 무엇입니까?


1. 자식 객체는 부모 타입으로 자동 타입 변환된다.     // (O)
2. 부모 객체는 항상 자식 타입으로 강제 타입 변환된다.     // (X)
3. 자동 타입 변환을 이용해서 필드와 매개 변수의 다형성을 구현한다.     // (O)
4. 강제 타입 변환 전에 instanceof 연산자로 변환 가능한지 검사하는 것이 좋다.     // (O)










3. final 키워드에 대한 설명으로 틀린 것은?


1. final 클래스는 부모 클래스로 사용할 수 있다.     // (X)
2. final 필드는 값이 저장된 후에는 변경할 수 없다.     // (O)
3. final 메소드는 재정의(오버라이딩)할 수 없다.     // (O)
4. static final 필드는 상수를 말한다.     // (O)




4. 오버라이딩(overriding)에 대한 설명으로 틀린 것은?
1. 부모 메소드의 시그너처(리턴 타입, 메소드명, 매개 변수)와 동일해야 한다.     // (O)
2. 부모 메소드보다 좁은 접근 제한자를 붙일 수 없다  ex)public(부모) ->private(자식)     // (O)
3. @Override 어노테이션을 사용하면 재정의가 확실한지 컴파일러가 검증한다.     // (O)
4. protected 접근 제한을 갖는 메소드는 다른 패키지의 자식 클래스에서 재정의할 수 없다.     // (X)




5.Parent 클래스를 상속해서 child 클래스를 다음과 같이 작성했는데, child클래스의 생성자에서 컴파일 에러가 발생했습니다. 그 이유를 설명해보시오.


--------------------Parent.java---------------------------
public class parent{
public String name;
public Parent(String name) {
this.name = name;
}
}
---------------------Child.java-------------------
public class Child extends Parent{


protected int studentNO;


public Child(String name, int studentNo) {


this.name = name;


this.studentNO = studentNo;
}
}
----------------------수정 Child.java-----------------------------------
public class Child extends Parent {
private int studentNo;


public Child(String name, int studentNo) {
///////////////////////////////////////
super(name);
//////////////////////////////////////
this.name = name;


this.studentNo = studentNo;
}
}
-------------------------------------------------------------------------










6.Parent 클래스를 상속받아 Child 클래스를 다음과 같이 작성했습니다. ChildExample
클래스를 실행했을 때 호출되는 각 클래스의 생성자의 순서를 생각하면서 출력 결과를 작성해보세요.


----------------------------Parent.java---------------------------------------------


public class Parent {
public String nation;


public Parent() {
this("대한민국");
System.out.println("Parent() call");
}


public Parent(String nation) {
this.nation = nation;
System.out.println("Parent(String nation) call");
}
}
----------------------------Child.java---------------------------------------------
 
 
public class Child extends Parent {
private String name;
 
public Child() {
this("홍길동");
System.out.println("Child() call");
}
 
public Child(String name) {
this.name = name;
System.out.println("Child(String name) call");
}
}
 
 
----------------------------ChildExample.java---------------------------------------------




public class ChildExample {
public static void main(String[] args) {
Child child = new Child();
}
}


---------------------------------------------------------------------------------------------------------------
Console
Parent(String nation) call
Parent() call
Child(String name) call
Child() call
---------------------------------------------------------------------------------------------------------------
 
 
 
 


7.Tire 클래스를 상속받아 snowTire 클래스를 다음과 같이 작성했습니다.SnowTire
Example클래스를 실행했을 때 출력 결과는 무엇일까요?




-----------------------Tire.java---------------------------------------------


public class Tire {
public void run() {
System.out.println("일반 타이어가 굴러갑니다.");
}
}
 
-----------------------SnowTire.java--------------------------------------------


public class SnowTire extends Tire {
@Override
public void run() {
System.out.println("스노우 타이어가 굴러갑니다.");
}
}
 


-----------------------SnowTireExample.java---------------------------------------------


public class SnowTireExample {
public static void main(String[] args) {
SnowTire snowTire = new SnowTire();
Tire tire = snowTire;


snowTire.run();
tire.run();
}
}
------------------------------------------------------------------------------
Console
스노우 타이어가 굴러갑니다.
스노우 타이어가 굴러갑니다.
----------------------------------------------------------------------------






8.A,B,C,D,E,F 클래스가 다음과 같이 상속 관계에 있을 때 다음 빈칸에 들어올 수 없는 코드는?




D->E->B->A
F->C->A








B b          =       (         )         
메소드 선언:void method(B b) {...}
메소드 호출:method(         )




1.new B()      //(O)
2.(B) new A()  //(X)
3.new D()      //(O)     
4.new E()      //(O)   

'legacy' 카테고리의 다른 글

이것이java다 5.6장 배열타입  (0) 2023.04.16
이것이java다 6장 확인문제 풀이  (0) 2023.04.16
이것이java다 8장 확인문제 풀이  (0) 2023.04.16
해외쇼핑몰 외주작업 (2)  (1) 2023.04.16
해외 쇼핑몰 외주작업 (1)  (0) 2023.04.16
profile

이세개발

@print(name)

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!