JAVA/연습문제

쉽게 배우는 자바 프로그래밍 2판 7장 연습문제 Part.2 (6번 ~ 11번)

세언이 2022. 10. 20. 15:01
반응형

# 개발 공부하는 초보자가 작성한 답안이니 정답이 아닐 수 있습니다!!!

 

 

 

6. 추상 클래스의 모든 메서드는 abstract로 선언해야 한다. (O, X)

🧤정답🧤
X - 추상 메서드, 일반 메서드, 생성자, 멤버변수와 같이 다양하게 구성될 수 있다.

 

 

7. 다음 인터페이스는 문법적으로 오류가 발생한다. (O, X)

📢주어진 값📢
interface RightOrWrong { }
🧤정답🧤
X - 추상 메서드, 일반 메서드, 생성자, 멤버변수와 같이 다양하게 구성될 수 있다.

 

8. 다음은 인터페이스와 구현 클래스를 정의한 코드다. 빈칸에 적절한 내용은?

📢주어진 값📢
interface Edible { 
	void isDelicious();
}

class Beverage _____________________ {
	public void isDelicious() {
    	System.out.println("sure!");
    }
}
🧤정답🧤
interface Edible { 
	void isDelicious();
}

class Beverage implements Edible {
	public void isDelicious() {
    	System.out.println("sure!");
    }
}

 

9. Printable는 인터페이스이다. 다음 코드에서 잘못된 행을 모두 찾아라.

 

📢주어진 값📢
interface Printable {
    String toner;
    abstract void print();
}

public class PrintableTest extends Printable {
	public static void main(String[] args) {
    	new Printable();
        new PrintableTest();
    }
    
    void print() { }
}
🧤정답🧤
interface Printable {
    public static final String toner;       // 인터페이스 멤버는 추상이나 public static final을 붙여줘야한다.
    abstract void print();
}

public class PrintableTest implements Printable {
	public static void main(String[] args) {
//      new Printable();             // 인터페이스의 객체는 생성 불가능하다.
        new PrintableTest();
    }
    
    public void print() { }          // 클래스의 범위가 public이므로 아래도 동일한 범위를 작성해야한다.
}

 

10. 다음 클래스를 이용해 show() 메서드를 호출할 때 2행의 value 값을 출력하고자 한다. 8행의 밑줄에 들어갈 적절한 내용은?

📢주어진 값📢
public class WhatIsThis {
	int value = 1;
    
    class Really {
    	int value = 2;
        
        void show() {
        	System.out.println(____________);
        }
    }
}
🧤정답🧤
public class WhatIsThis {
    int value = 1;
    
    class Really {
    	int value = 2;
        
        void show() {
        	System.out.println(WhatIsThis.this.value);
        }
    }
}


이유 : 2행의 값은 외부클래스 value의 값이기 때문에 WhatISThis의 지역변수값을 호출해야한다.



참고✔
내부클래스 즉 6행의 값을 나타내는 value의 값은 호출하기 위해서는 System.out.println(value);

 

11. 다음 코드를 컴파일하면 어떤 파일을 생성하는지 파일 이름을 모두 나열하라.

📢주어진 값📢
public class InnerDemo {
	class MemberClass {
	}

	interface MembetInterface {
	}

	public static void main(String[] args) {
		class LocalClass {
		}
	}

	static void foo() {
		class LocalClass {
		}
	}
}
🧤정답🧤
동일한 이름의 멤버클래스 LocalClass 2개, 다른 이름의 멤버클래스 MemberClass 1개,중첩인터페이스 1개, 외부클래스 InnerDemo 1개

InnerDemo$1LocalClass.class
InnerDemo$2LocalClass.class
InnerDemo$MemberClass.class
InnerDemo$MembetInterface.class
InnerDemo.class

 

 

반응형