자바 프로그래밍 14번째 수업

김형우·2022년 11월 10일
0

Java

목록 보기
14/22

1. Object 클래스에 대하여 설명하시오.

모든 클래스의 모체가 되는 최상위 클래스이며,

중요 메소드로는 .eqauls(), .toString()등이 있다.

2. 아래에서 주소가 출력되는 이유를 순차적으로 설명하시오.

class A{

}

public class Test {
	public static void main(String[] args) {
		A a = new A();
		System.out.println(a); 
	}
}

println 함수의 정의부분에 들어가보면, Object를 넣게 되면
valueOf(x)함수에 의해 toString()이 실행되며, toString에서는
getClass().getName() + "@" + Integer.toHexString(hashCode());로 정의되어있어,
클래스명@객체의 주소명으로 출력되게 된다.

3.class 이름 및 함수에서 final의 의미는?

클래스 이름에 final을 붙이면 더이상 상속이 되지 않게 하겠단 의미이며,
메소드 이름에 final을 붙이면 더이상 오버라이딩이 되지 않게 한다는 의미이다.

4. interface 와 class 의 차이는?

interface는 다중상속이 가능하지만, class는 단 하나만 상속 가능가능하다.

5.다음 출력결과가 나오도록 프로그램을 완성 하시오.[필수]

출력

From Samsung printer
This is a report about ...
From LG printer
This is a report about ...

소스코드(받은것)

interface Printable { // MS가 정의하고 제공한 인터페이스
	public void print(String doc);
}

	//SPrinterDriver 와 LPrinterDriver를 만드시오
	public static void main(String[] args) {
		String myDoc = "This is a report about...";

		// 삼성 프린터로 출력
		Printable prn = new SPrinterDriver();
		prn.print(myDoc);
		System.out.println();

		// LG 프린터로 출력
		prn = new LPrinterDriver();
		prn.print(myDoc);
	}

구현한 소스코드


// 앞부분은 동일

Class SPrinterDriver implements Printable {
	
 	public void print(String doc){
    	System.out.println("From Samsung Printer");
	}
}

Class LPrinterDriver implements Printable {

	public void print(String doc){
    	System.out.println("From LG Printer");
	}
}
// 뒷부분 동일

6. @Override 에 대하여 설명하시오.

@Override는 어노테이션의 일종으로, 상속받은 메소드라는것을 표시하는데 사용한다.
만약 @Override만 표기해 둔 채로 구현하지 않으면 컴파일 에러가 발생한다.

7. interface 에 대하여 설명하시오.

클래스에 상속되어 구현되기 위한 형식 상의 클래스이며, 상속받은 클래스는 반드시 선언된 클래스를 구현해야한다.
메소드의 선언만 있고 바디(내용)은 없는 것이다.

8. interface에 올 수 있는 두 가지는?

상수와 메소드

9. abstract 키워드에 대하여 설명하시오.

abstract란, interface 내에서 메소드 정의 시, 실제 구현 내용이 없는 메소드를 만들고자 할때 사용하는 키워드이다.

10.아래의 출력 결과가 아래와 같이 나오도록 프로그래밍 하시오.

출력 결과

Object obj = new Circle(10);

System.out.println(obj); //출력: 넓이는 100 입니다. (예시)

구현해야할 코드


class Circle {

	int radius;
	
    Circle(int radius){
    	this.radius = radius;
	}
    
    public String toString(){
    	return "넓이는"+radius*radius*Math.PI+"입니다.";
        // 만약 값만 리턴하고 싶다면
        
        return String.valueOf(radius*radius*Math.PI);
        // 로 설정해주면 된다.
    }
}

profile
개발자 지망생

0개의 댓글