본문 바로가기
솔루션모음/파워자바 중간점검 Exercise Lab

[파워자바] 9장 중간점검문제 Exercise Lab Exercise 솔루션 답지

by 이얏호이야호 2023. 9. 15.

중간점검문제

p.205

1. MyClass

2. 생성자는 반환형이 없다.

3. 기존 생성자 호출

 

p.210

1. 정적 변수는 클래스의 모든 객체들에 의해 공유될때 사용하는것이 좋다.

2. 정적 변수와 정적 메소드는 객체를 생성할 필요가 없고 매개 변수를 통하여 전달된 값만 있으면 되므로 클래스 이름을 통하여 접근한다.

3. main()메소드도 정적 메소드이기 때문

 

p.213

1. 필드를 다른 클래스가 직접 사용하지 못하게 하기 위해서

2. 디폴트로 package가 된다. 즉 같은 패키지에 속하는 클래스들은 자유롭게 사용할 수 있다.

 

p.214

1. 자기 자신을 참조하는데 사용된다.

2. 자신의 생성자 호출한다.

 

p.217

1. 사용관계는 하나의 클래스가 다른 클래스를 사용하는 것이고, 집합관계는 하나의 클래스가 다른 클래스를 포함하는 것이다.

 

Lab

1.

public class Circle {

private double radius;

static final double PI=3.141592; // PI라는 이름으로 3.141592로 초기화된 정적 상수

}

 

(1)

public Circle(double r){

radius = r;

}

(2)

 

public double getRadius() {

return radius;

}

public void setRadius(double radius) {

this.radius = radius;

}

(3)

private double square(double value)

{

return value*value;

}

(4)

public double getArea()

{

return square(radius)*PI;

}

(5)

public double getPerimeter()

{

return 2.0*PI*radius;

}

(6)

public static double getPI()

{

return PI;

}

(7) square() 함수는 정적 함수가 아니라서 main()에서 호출하면 오류가 발생한다.

(8) getPI() 함수는 정적 함수이므로 main()에서 호출할 수 있다.

(9)

class Circle {

private double radius;

static final double PI=3.141592; // PI라는 이름으로 3.141592로 초기화된 정적 상수

public Circle(double r){

radius = r;

}

public double getRadius() {

return radius;

}

public void setRadius(double radius) {

this.radius = radius;

}

private double square(double value)

{

return value*value;

}

public double getArea()

{

return square(radius)*PI;

}

public double getPerimeter()

{

return 2.0*PI*radius;

}

public static double getPI()

{

return PI;

}

 

}

public class CircleTest {

public static void main(String args[]) {

Circle c = new Circle(5.0); // 객체 생성, 생성자 호출시 반지름을 5.0으로 설정

System.out.println(c.getArea());// 원의 면적 계산하여 출력

System.out.println(c.getPerimeter());// 원의 둘레 계산하여 출력

}

}

 
Exercise

1.

(1) 객체가 생성될 때에 필드에게 초기값을 제공하고 필요한 초기화 절차를 실행

(2) 매개변수의 자료형이나 매개변수 개수로 구별되어 호출

(3) 자기 자신을 참조

(4) 정적변수는 하나의 클래스에 하나만 존재하여 그 클래스의 모든 객체들에 의해 공유되지만 인스턴스 변수는 각 인스턴스마다 별도로 생성된다.

(5) 객체의 참조값이 전달된다.

(6) 정적 메소드는 객체가 생성되지 않은 상태에서 호출되는 메소드이므로 객체 안에서 존재하는 인스턴스 변수들은 사용할 수 없다.

 

2.

(1) 생성자 Point()는 값을 반환하지 않는다 따라서 void를 삭제한다.

(2) 메소드의 반환형이 다르다고 해서 메소드를 중복시킬 수 있는 것은 아니다.

class MyMath {

public int getRandom1(){

return (int)Math.random();

}

public double getRandom(){

return Math.random();

}

}

(3) 정적 메소드 getStringName()에서 인스턴스 메소드 getName()을 호출할 수 없다.

class MyClass{

 

private static String getName(){

return "Myclass";

}

public static String getClassName(){

return getName();

}

}

3.

(1)

public class Cube {

private double side; // 정육면체의 한변

public Cube()

{

side = 0;

}

public double getSide() {

return side;

}

public double getVolume() {

return side*side*side;

}

}

(2)

public class Cube {

private double side; // 정육면체의 한변

public Cube()

{

side = 0;

}

public Cube(double side)

{

this.side = side;

}

public double getSide() {

return side;

}

public double getVolume() {

return side*side*side;

}

}

 

4.

class MyMetric {

private static double distance;

public static double kiloToMile(double d){

distance = d / 1.6093;

return distance;

}

public static void miletoKilo(double d){

distance = d * 1.6093;

}

}

public class MyMetricTest{

public static void main(String args[]){

double d = MyMetric.kiloToMile(1);

System.out.println(d);

}

}

 

5.

s_instancenull일 때만 객체를 생성하고 이미 객체가 생성되어 있으면 단순히 객체의 참조값을 반환한다.

 

class Single {

private static Single s_instance;

public static Single getInstance() {

if (s_instance == null) {

s_instance = new Single();

}

return s_instance;

}

}

 

 

댓글