final 키워드에 대한 설명으로 틀린 것은?
✔ 1.final 클래스는 부모클래스로 사용할 수 있다.
2.final 필드는 값이 저장된 후에는 변경할 수 없다.
3.final 메소드는 재정의(오버라이딩)할 수 없다.
4.static final 필드는 상수를 말한다.
오버라이딩에 대한 설명으로 틀린 것은?
1.부모메소드의 시그너처(리턴타입, 메소드명, 매개변수)와 동일해야한다.
2.부모메소드보다 좁은 접근제한자를 붙일 수 없다.(예: public 부모 → private 자식)
3.@Override 어노테이션을 사용하면 재정의가 확실한지 컴파일러가 검증한다.
✔ 4.protected 접근제한을 갖는 메소드는 다른 패키지의 자식 클래스에서 재정의할 수 없다. *있다
* protected는 같은 패키지에 있을 때는 아무런 제한 없이사용. 다른 패키지의 경우 자식클래스만 접근 가능
Parent클래스를 상속해서 Child 클래스를 다음과 같이 작성했는데 Child클래스의 생성자에서 컴파일 에러가 발생했다
그이유는?
package ex04;
public class Parent {
public String name;
public Parent(String name){
this.name = name;
}
}
package ex04;
public class Child extends Parent{
private int studentNo;
public Child(String name, int studentNo){
this.name = name;
this.studentNo = studentNo;
}
}
정답: super을 써주지 않았기 때문!
아래는 수정된 Child class이다.
package ex04;
public class Child extends Parent{
private int studentNo;
public Child(String name, int studentNo){
super(name);
this.studentNo = studentNo;
}
}
Parent클래스를 상속받아 Child클래스를 다음과 같이 작성했습니다. ChildExample 클래스를 실행했을 때 호출되는 각 클래스의 생성자의 순서를 생각하면서 출력결과를 작성해보세요.
package ex06;
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");
}
}
package ex06;
public class Child extends Parent{
private String name;
public Child(){
//super와 this는 같이있을수없다.
this("홍길동");
// this("홍길동")은 아래있는 public Child를 실행시킨다
System.out.println("Child() call");
}
public Child(String name){
this.name = name;
System.out.println("Child(String name) call");
}
}
package ex06;
public class ChildExample {
public static void main(String[] args) {
Child child = new Child();
}
}
정답:
Parent(String nation) call
Parent() call
Child(String name) call
Child() call
Tire 클래스를 상속받아 SnowTire 클래스를 다음과 같이 작성했습니다. SnowTireExample클래스를 실행했을 때 출력결과는 무엇일까요 ?
package solution;
public class Tire {
public void run() {
System.out.println("일반 타이어가 굴러갑니다.");
}
}
package solution;
public class SnowTire extends Tire{
@Override
public void run(){
System.out.println("스노우 타이어가 굴러갑니다.");
}
}
package solution;
public class SnowTireExample {
public static void main(String[] args) {
SnowTire snowtire = new SnowTire();
Tire tire = snowtire;
snowtire.run();
tire.run();
}
}
정답:
스노우 타이어가 굴러갑니다.
스노우 타이어가 굴러갑니다.
'STUDY > JAVA' 카테고리의 다른 글
[JAVA-이것이자바다.8장] 인터페이스 확인 문제 (0) | 2022.07.19 |
---|---|
[JAVA] 22-07-19 예외(Exception) ☑ (0) | 2022.07.19 |
[JAVA] 22-07-18 익명 객체 ☑ (0) | 2022.07.18 |
[JAVA] 22-06-13 상수풀 / String · StringBuilder · StringBuffer ☑ (0) | 2022.07.18 |
[JAVA] 22-07-14 중첩 클래스 중첩 인터페이스 ☑ (0) | 2022.07.14 |