-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Problem5 stopmin #31
Problem5 stopmin #31
Conversation
stopmin
commented
Jul 16, 2023
- PR 보내는 걸 깜박했네요 ㅠㅠ
this.name = name; | ||
} | ||
|
||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 코드는 "Practice.stopmin.Chapter5" 패키지에 있는 Animal 클래스를 정의하고 있습니다. 해당 클래스는 name 변수와 sleep() 메서드를 가지고 있으며, 생성자를 통해 name 값을 초기화합니다.
코드 리뷰 시 다음과 같은 사항을 고려할 수 있습니다:
-
변수 접근 제한자: 현재 name 변수는 public으로 선언되어 있습니다. 따라서 외부에서 직접적으로 접근할 수 있습니다. 필요에 따라 변수의 접근을 제어하기 위해 private로 변경하는 것을 고려할 수 있습니다.
-
예외 처리: 현재 코드는 예외 처리가 없습니다. 필요에 따라 예외 처리를 추가하여 코드의 안정성을 높일 수 있습니다.
-
주석: 주석은 코드의 가독성과 이해를 돕기 위해 사용됩니다. 클래스 및 메서드 선언 위에 주석을 추가하여 해당 요소의 목적이나 기능을 설명하는 것이 좋습니다.
-
테스트 케이스: 코드를 테스트하기 위한 충분한 테스트 케이스 작성도 중요합니다. 예상되는 입력과 출력을 고려하여 테스트 케이스를 작성하여 코드를 검증할 수 있습니다.
이 외에도 코드의 상황과 목적에 따라 추가적인 개선 사항을 고려할 수 있습니다.
} | ||
|
||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
위의 코드 패치는 Calculator 클래스를 정의하고, 더하기와 빼기 메서드를 구현하는 간단한 예제입니다. main 메서드에서 Calculator 객체 두 개를 생성하고 출력합니다.
이 코드의 주요한 이슈나 버그는 보이지 않습니다. 그러나 몇 가지 개선 사항은 있습니다. 첫째, result 변수는 현재 클래스의 인스턴스 변수로 선언됩니다. 따라서 여러 계산기 객체가 생성되었을 때 각각의 계산기 결과가 서로에게 영향을 주지 않도록 하려면, result 변수를 인스턴스 변수 대신 메서드 내의 지역 변수로 변경하는 것이 좋습니다.
둘째, main 메서드에서 calculator1과 calculator2 객체를 생성하고 출력하고 있지만, 실제로 어떤 값을 계산하거나 출력하지 않습니다. 이 부분을 보완하여 각 객체의 add 메서드나 sub 메서드를 사용하여 계산된 결과를 출력하도록 수정하는 것이 좋습니다.
아래는 개선된 코드 예시입니다:
package Practice.stopmin.Chapter5;
public class Calculator {
int add(int num1, int num2) {
return num1 + num2;
}
int sub(int num1, int num2) {
return num1 - num2;
}
public static void main(String[] args) {
int num1 = 10;
int num2 = 5;
Calculator calculator1 = new Calculator();
int result1 = calculator1.add(num1, num2);
System.out.println("calculator1의 결과: " + result1);
Calculator calculator2 = new Calculator();
int result2 = calculator2.sub(num1, num2);
System.out.println("calculator2의 결과: " + result2);
}
}
이렇게 개선된 코드는 각 계산기 객체에 대해 add 메서드와 sub 메서드를 호출하고, 그 결과를 출력합니다.
Dog dog1 = new Dog("Puppy"); | ||
dog1.sleep(); | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
주어진 코드 패치를 간단히 코드 리뷰해 드리겠습니다.
이 코드는 "Dog"라는 이름의 클래스를 선언하고, 이 클래스가 "Animal" 클래스를 상속받아 구현되었습니다. "Dog" 클래스에는 생성자와 "sleep()" 메서드가 정의되어 있습니다.
주요 피드백 및 개선 제안:
- 주어진 코드만을 보면, "Animal" 클래스에 대한 정보가 없으므로 "Animal" 클래스의 내용을 확인할 필요가 있습니다.
- 코드에서 생성된 "Dog" 객체는 sleep() 메서드를 호출하지만, sleep() 메서드의 로직 또한 확인되지 않습니다. 따라서 sleep() 메서드의 구현도 체크해야 합니다.
위 내용을 고려하여 전체적인 코드 리뷰를 수행하시길 바랍니다.
Dog dog1 = new Dog("Hi"); | ||
dog1.sleep(); | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 코드 패치는 HouseDog
라는 클래스를 정의하고, Dog
클래스를 확장하는 것으로 보입니다. HouseDog
클래스에는 부모 클래스인 Dog
의 생성자를 호출하는 생성자가 있습니다.
sleep
메서드는 @Override
어노테이션을 통해 오버라이딩되었습니다. 이 메서드는 해당 개의 이름과 "is Sleeping!"이라는 메시지를 출력합니다.
main
메서드에서는 Dog
객체를 생성하고 sleep
메서드를 호출하는데, 생성된 개 객체의 이름은 "Hi"로 지정되어 있습니다.
이 코드는 주요한 버그 리스크가 없어 보입니다. 단지 누락된 부분이나 개선 제안을 드리기 위해서는 Dog
클래스의 내용이 필요합니다. 그러나 주어진 정보만으로는 적절한 상속 및 메서드 오버라이딩이 이루어지고 있다는 점을 확인할 수 있습니다.
System.out.println(student2.getAge() + "살 " + student2.getName()); | ||
System.out.println(student1.toString()); | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 코드는 Student
클래스를 정의하고 사용하는 코드입니다. 아래는 코드 리뷰 및 개선 제안입니다:
- 주석 처리된 부분이 있습니다. 주석 처리된 코드 블록을 삭제해도 됩니다.
setName
및setAge
메서드는 외부에서 호출될 수 있으므로, 접근 지정자(public
)를 추가하는 것이 좋습니다.toString
메서드가 구현되어 있습니다. 이는 객체가 문자열로 표현될 때 사용됩니다. 현재 구현은 이름만을 반환하므로 나이 정보를 포함할 수 있도록 수정하는 것이 좋습니다.main
메서드에서student1
과student2
인스턴스 생성 후 속성을 설정하지 않으면, 생성 시에 초기 값을 전달하므로 해당 코드 블록은 필요하지 않습니다.
전반적으로 코드는 기본적인 클래스 정의 및 메서드 사용 방법을 따르고 있습니다. 요청한 리뷰 중 주요한 이슈는 주석 처리된 코드 블록을 삭제해야 한다는 점입니다. 이외에는 큰 문제가 없어보입니다.
// System.out.println(Calculator.add(3)); | ||
// System.out.println(Calculator.add(4)); | ||
// } | ||
//} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
주어진 코드 패치는 Calculator 클래스와 main 메서드가 있는 클래스의 일부분입니다. Calculator 클래스는 정적 변수인 result를 가지고 있으며, add 메서드를 통해 result에 값을 더하고 결과를 반환합니다. main 메서드에서는 Calculator 클래스의 add 메서드를 호출하여 결과를 출력합니다.
이 코드의 버그 리스크와 개선 제안은 다음과 같습니다:
버그 리스크:
- Calculator 클래스의 add 메서드는 정적 변수인 result를 사용하므로, 여러 스레드에서 동시에 호출될 경우 예상하지 못한 결과가 발생할 수 있습니다. 이를 해결하기 위해 result 변수를 스레드로부터 안전하도록 동기화해야 합니다.
개선 제안:
- 주석 처리된 부분을 정리하고 필요한 패키지 선언을 추가하세요.
- 클래스 이름이 비어있습니다. 적절한 클래스 이름을 지정하세요.
- 정적 변수인 result와 정적 메서드인 add는 클래스 수준으로 선언되어 있습니다. 일반적으로 객체 지향 원칙을 따르기 위해 인스턴스 변수와 인스턴스 메서드로 변경하는 것이 좋습니다.
- add 메서드에 매개변수와 반환 타입이 모두 int로 선언되어 있습니다. 이 경우 add 메서드는 현재 값에 숫자를 더해야 하는 것처럼 보입니다. 이를 명확히 하기 위해 매개변수의 이름을 변경하고, 반환 타입을 void로 바꾸어 현재 값에 해당 숫자를 더하는 메서드로 수정하는 것이 좋습니다.
- main 메서드에서는 Calculator 클래스의 인스턴스를 생성한 후 add 메서드를 호출하도록 변경하는 것이 객체 지향적인 접근 방식입니다.
아래는 개선된 코드의 예시입니다:
package Practice.stopmin.Chapter5;
class Calculator {
private int result = 0;
public void addToResult(int num) {
result += num;
}
public int getResult() {
return result;
}
}
public class MainClass {
public static void main(String[] args) {
Calculator calculator = new Calculator();
calculator.addToResult(3);
calculator.addToResult(4);
System.out.println(calculator.getResult());
}
}
이렇게 개선된 코드는 Calculator 클래스의 인스턴스를 생성하고, addToResult 메서드를 통해 값을 더합니다. 마지막으로 getResult 메서드를 사용하여 결과를 출력합니다.
return sum / data.length; | ||
} | ||
|
||
|
||
int getValue() { | ||
return this.value; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@@ -12,6 +12,29 @@ void add(int val) {
this.value += val;
}
- void sub(int val) {
- this.value -= val;
- }
- boolean isOdd(int num) {
- if (num % 2 == 1) {
-
return true;
- } else {
-
return false;
- }
- }
- int avg(int[] data) {
- int sum = 0;
- for (int entry : data) {
-
sum += entry;
- }
- return sum / data.length;
- }
int getValue() {
return this.value;
}
위 코드 패치를 간단하게 검토해드리겠습니다.
-
add 메소드와 sub 메소드에서는 값을 더하고 빼는 기능을 수행하는데 문제점은 없어 보입니다.
-
isOdd 메소드에서는 주어진 숫자가 홀수인지 아닌지를 판별하여 참 또는 거짓을 반환합니다. 현재 구현은 문제 없어 보이나 조건 검사를 단순화할 수 있습니다. 조건
(num % 2 == 1)
을 그대로 반환하면 됩니다. (예:return num % 2 == 1;
) -
avg 메소드에서는 배열의 평균 값을 계산하는데 문제가 없으나 주의할 점이 있습니다. 현재 구현된 것은 정확한 평균 값을 구하지 않고, 정수 나눗셈을 사용하여 소수점 이하는 버리게 됩니다. 평균 값을 정확하게 구하기 위해서는
return (double)sum / data.length;
와 같이sum
을double
자료형으로 변환하여 나누어야 합니다. -
getValue 메소드에서는 객체의 value 값을 반환하는 것으로 보입니다.
전체적으로 주어진 코드 패치에 큰 문제는 없어 보이지만, 각 메소드가 의도한 대로 동작하는지 테스트해보고 예상되는 입력에 대해 올바른 결과를 반환하는지 확인하는 것이 좋습니다.
return value; | ||
} | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
주어진 코드 패치의 대해 간단한 코드 리뷰를 도와드리겠습니다:
-
package Problem.stopmin.Chapter5;
라인은 주변 환경에 따라 적절한 패키지 이름으로 수정되어야 할 수 있습니다. -
MaxLimitCalculator
클래스는Calculator
클래스를 상속받고 있습니다. 이 상태로는Calculator
클래스의 내용 및 메소드 구현이 필요합니다. 현재 주어진 코드에서는Calculator
클래스가 없기 때문에 해당 부분을 확인해야 합니다. -
getValue()
메소드는@Override
애너테이션과 함께 재정의되었습니다. 하지만,value
변수가 어디서 선언되었는지 알 수 없기 때문에 해당 변수의 범위 및 초기화에 대해 추가적인 정보가 필요합니다. -
getValue()
메소드는value
값이 100보다 크면 100을 반환하고 그렇지 않으면value
값을 반환합니다. 이 로직은 정상적으로 작동할 수 있지만,value
값이 음수인 경우에 대한 처리가 없습니다. 필요에 따라 음수 값에 대한 예외 처리를 고려해볼 수 있습니다.
이상이 코드 패치의 간단한 리뷰입니다. 특정 버그나 개선 사항을 파악하기 위해서는 더 많은 정보와 전체 코드베이스를 확인하는 것이 필요합니다.
newCal.add(20); | ||
System.out.println(newCal.getValue()); | ||
newCal.sub(3); | ||
System.out.println(newCal.getValue()); | ||
// TODO: Calculator 클래스를 상속하는 UpgradeCalculator를 만들고 값을 뺄 수 있는 minus 메서드를 추가해 보자. | ||
/** 다음과 같이 동작하는 클래스를 만들어야 한다. | ||
* |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- 코드 리뷰:
-
cal.add(10);
및System.out.println(cal.getValue());
의 뒤에 주석이 필요합니다. 주석을 통해 코드의 의도를 설명해야 합니다. -
새로운
UpgradeCalculator
인스턴스인newCal
을 만들고, 이를 사용하여 덧셈과 뺄셈을 수행하는 부분이 추가되었습니다. 이것은 요구 사항에 맞는 작업입니다. -
주석에 나와있는 대로
UpgradeCalculator
클래스에minus
메서드를 추가해야 합니다. 현재 제시된 코드에서는minus
메서드가 없으므로 구현되어야 합니다. -
주석을 통해 클래스의 동작에 대한 설명이 필요합니다.
- 개선 제안:
-
각 라인의 주석을 추가하여 코드의 의도를 명확하게 설명하세요.
-
UpgradeCalculator
클래스에minus
메서드를 구현해야 하며, 이 메서드는 값을 뺄 수 있어야 합니다. -
코드 상단에 있는
import
구문이 빠져있습니다. 필요한 모든 import 구문을 추가하세요. -
코드의 가독성을 향상시키려면 변수 및 메서드 이름을 명확하게 지정하세요.
-
자바 코드 스타일 규칙에 따라 들여쓰기와 중괄호 사용을 일관되게 조정하세요.
-
주석은 문장으로 작성되어야 하며, 올바른 문법과 맞춰져야 합니다.
이상의 리뷰 및 개선 제안은 주어진 정보에 기반하여 작성된 것입니다. 전체 코드와 목표를 확인하지 못했기 때문에 제안한 내용이 완전하지는 않을 수 있습니다.
MaxLimitCalculator cal = new MaxLimitCalculator(); | ||
cal.add(50); | ||
cal.add(60); | ||
System.out.println(cal.getValue()); | ||
/** 다음과 같이 동작하는 클래스를 만들어야 한다. (단 MaxLimitCalculator 클래스는 반드시 다음의 Calculator 클래스를 상속해서 만들어야 한다.) | ||
* | ||
* MaxLimitCalculator cal = new MaxLimitCalculator(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
코드 리뷰를 진행해보겠습니다. 주어진 패치의 내용은 다음과 같습니다:
@@ -8,6 +8,10 @@ public class Q02 {
public static void main(String[] args) {
// TODO: 객체변수 value가 100 보다 큰 값은 가질 수 없도록 제한하는 MaxLimitCalculator 클래스를 만들어 보자.
+ MaxLimitCalculator cal = new MaxLimitCalculator();
+ cal.add(50);
+ cal.add(60);
+ System.out.println(cal.getValue());
/** 다음과 같이 동작하는 클래스를 만들어야 한다. (단 MaxLimitCalculator 클래스는 반드시 다음의 Calculator 클래스를 상속해서 만들어야 한다.)
*
* MaxLimitCalculator cal = new MaxLimitCalculator();
이 코드 패치에 대한 리뷰를 제공해드리겠습니다.
- 주어진 패치에서
MaxLimitCalculator
클래스와Calculator
클래스의 정의가 누락되었습니다. 이러한 경우 정확한 리뷰를 제공할 수 없으므로 추가 정보가 필요합니다.
주어진 코드 패치만으로는 코드의 전반적인 오류나 개선점을 파악하기 어렵습니다. 따라서 추가 정보 또는 전체 소스 코드를 제공해주시면 보다 구체적인 리뷰를 제공할 수 있습니다.
|
||
Calculator cal = new Calculator(); | ||
System.out.println(cal.isOdd(3)); | ||
System.out.println(cal.isOdd(4)); | ||
// TODO: 다음과 같이 주어진 정수가 홀수인지 짝수인지 판별해 주는 Calculator 클래스의 메서드를 작성하시오. (홀수이면 true, 짝수면 false를 리턴해야 한다.) | ||
/** | ||
* Calculator cal = new Calculator(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- 이 코드 패치는 Calculator 클래스의
isOdd
메서드를 호출하여 주어진 정수가 홀수인지 짝수인지 확인합니다. - 주어진 테스트 케이스는 3과 4로 구성되어 있습니다.
- 코드에서 추가된 부분은 인스턴스화된 Calculator 객체(
cal
)를 사용하여isOdd
메서드를 호출하고 그 결과를 출력하는 부분입니다. - 주어진 패치 상에는 버그나 위험 요소는 보이지 않으며, 기능적으로도 잘 작성되어 있는 것으로 보입니다.
- 개선을 위해 다음 사항에 유의할 수 있습니다:
- 다양한 테스트 케이스를 추가하여
isOdd
메서드의 정확성을 검증하는 것이 좋습니다. - 코드 내용에 대한 주석을 충분히 작성하여 가독성을 높일 수 있습니다.
- 코드와 주석을 한글로 작성한 것 같으니 일관성을 유지하고, 적절한 오류 처리를 추가하는 것이 좋습니다.
- 필요한 경우,
isOdd
메서드의 Parity(홀짝) 체크 알고리즘 및 문제 조건에 대해 더 자세히 설명하는 주석을 추가하는 것도 좋습니다.
- 다양한 테스트 케이스를 추가하여
전반적으로 이 코드 패치는 목적에 맞게 동작하며, 이해하기 쉽고 개선 여지도 있는 일반적인 코드입니다.
int[] data = {1,3,5,7,9}; | ||
Calculator cal = new Calculator(); | ||
int result = cal.avg(data); | ||
System.out.println(result); | ||
/** 정수 배열 사용 예 | ||
* | ||
* int[] data = {1, 3, 5, 7, 9}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아래는 코드 패치입니다. 코드 리뷰와 함께 버그 위험 및 개선 제안을 도와드리겠습니다.
@@ -9,6 +9,10 @@ public static void main(String[] args) {
// TODO: 다음과 같이 정수 배열 또는 정수의 리스트로 그 평균값을 구해 리턴하는 Calculator 클래스를 작성하시오. (메서드 오버로딩을 사용해 보자.)
+int[] data = {1,3,5,7,9};
+Calculator cal = new Calculator();
+int result = cal.avg(data);
+System.out.println(result);
/** 정수 배열 사용 예
*
* int[] data = {1, 3, 5, 7, 9};
코드 리뷰:
- 코드의 주석에 적힌 대로
Calculator
클래스를 작성하여 정수 배열이나 정수의 리스트에서 평균값을 계산하는 기능을 추가하려고 합니다. Calculator
클래스의avg
메서드를 잘 활용하여 평균값을 계산합니다.Calculator
객체를 생성한 후,avg
메서드를 호출하여 계산 결과를result
변수에 저장합니다.result
값을 출력하기 위해System.out.println(result);
를 사용합니다.
위의 코드에서 발견할 수 있는 문제점은 없어 보입니다. 모든 것이 올바른 구문에 맞게 작성되었습니다.
@@ -15,5 +15,7 @@ public static void main(String[] args) { | |||
ArrayList<Integer> b = a; | |||
a.add(4); | |||
System.out.println(b.size()); | |||
|
|||
// 원래 3개였다가 add 메서드로 하나 추가했으니깐. | |||
} | |||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 코드 패치의 간단한 코드 리뷰를 도와드리겠습니다. 잠재적인 버그 위험과 개선 제안에 대해 언급하겠습니다.
- Line 15:
ArrayList<Integer> b = a;
에서b
변수는a
변수에 대한 참조입니다. 따라서b.add(4);
를 호출하면a
리스트도 변경됩니다. 이 코드는 원하는 대로 작동하지 않을 수 있으므로 수정하는 것이 좋습니다.
수정 제안:
ArrayList<Integer> b = new ArrayList<>(a);
- Line 17: 주석은 도움이 될 수 있지만, 현재 주석은 잘못된 정보를 제공합니다.
b.size()
는 출력 결과로4
를 반환하지 않습니다. 올바른 주석으로 수정하는 것이 좋습니다.
수정 제안:
System.out.println(b.size()); // 1을 출력한다
이상입니다. 주요한 버그도 없고, 개선할 점도 몇 가지 있었습니다. 필요한 수정 사항을 적용하시고 보다 나은 코드를 사용하시기 바랍니다.
|
||
public class UpgradeCalculator extends Calculator { | ||
|
||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 코드 패치는 Problem.stopmin.Chapter5
패키지에 UpgradeCalculator
라는 클래스를 추가합니다. UpgradeCalculator
는 Calculator
클래스를 상속받고 있습니다.
이 코드 패치의 주요 리스크 및 개선 제안은 다음과 같습니다:
- 클래스의 목적 설명:
UpgradeCalculator
클래스의 기능과 목적에 대한 주석 또는 문서화가 없습니다. 코드에 목적을 명확하게 설명하는 주석을 추가하는 것이 좋습니다. - 메서드 구현: 현재 이 클래스에는 어떠한 메서드도 구현되어 있지 않습니다. 필요한 기능을 정의하기 위해 적절한 메서드를 추가해야 합니다.
- 오버라이딩:
UpgradeCalculator
클래스가Calculator
클래스를 상속받았으므로, 필요한 경우 오버라이딩 할 수 있는 메서드를 직접 구현해야 합니다.
이 외에도 코드의 일관성을 유지하고 가독성을 향상시키기 위해 다양한 개선 사항을 고려할 수 있습니다. 그러나 제공된 코드에서는 별다른 버그 리스크가 보이지 않습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
gpt가 열심히 리뷰해주었네요 ㅎㅎ
그런데 Q7,8,9 가 없네용?? 누락된건 지 궁금하네요~
확인했습니다 😄
System.out.println(b.hello()); // 3번 | ||
System.out.println(b.bark()); // 4번 | ||
// System.out.println(c.hello()); // 5번: Predator타입은 method가 bark만 가능하다. | ||
System.out.println(c.bark()); // 6번 | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@@ -10,11 +10,11 @@ public static void main(String[] args) {
Lion b = new Lion();
Predator c = new Lion();
-// System.out.println(a.hello()); // 1번
-// System.out.println(a.bark()); // 2번
-// System.out.println(b.hello()); // 3번
-// System.out.println(b.bark()); // 4번
-// System.out.println(c.hello()); // 5번
-// System.out.println(c.bark()); // 6번
+ System.out.println(a.hello()); // 1번
+// System.out.println(a.bark()); // 2번: animal클래스에는 bark method가 없다.
+ System.out.println(b.hello()); // 3번
+ System.out.println(b.bark()); // 4번
+// System.out.println(c.hello()); // 5번: Predator타입은 method가 bark만 가능하다.
+ System.out.println(c.bark()); // 6번
}
}
이 코드 패치는 주석 처리된 코드 블록의 일부 내용을 수정합니다. 다음은 코드 검토에 대한 개요입니다.
1번 주석 처리된 라인은 주석 해제되어 실행되고 있습니다.
2번 주석 처리된 라인은 Animal
클래스에 bark
메서드가 존재하지 않아 컴파일 오류가 발생할 수 있습니다.
3번 주석 처리된 라인은 주석 해제되어 실행되고 있습니다.
4번 주석 처리된 라인은 주석 해제되어 실행되고 있습니다.
5번 주석 처리된 라인은 Predator
타입은 bark
메서드만 호출 가능하며, hello
메서드를 호출할 수 없습니다.
6번 주석 처리된 라인은 주석 해제되어 실행되고 있습니다.
개선 제안:
- 2번 주석 처리된 라인은
a.bark()
를 호출하려 하지만Animal
클래스에는bark
메서드가 없는 것으로 판단됩니다. 따라서 이 부분을 수정하거나 주석 처리해야 할 수 있습니다. - 5번 주석 처리된 라인은
c.hello()
를 호출하려 하지만Predator
타입의 객체는hello
메서드를 호출할 수 없는 것으로 판단됩니다. 이에 대한 처리 방법을 고려해야 합니다.
누락된 부분 더하여 push 했습니다 ! :) |