디폴트 생성자에 의해 구동되는 인스턴스 c1과 두번째 생성자에 의해 구동되는 인스턴스 c2를 갖는 프로그램을 작성해야 해요 <뼈대 코드> public class TestCircle { public static void main(String[] args) { // TODO Auto-generated method stub private double radius; private String color; public TestCircle() { radius = 1.0; color = "red"; } public TestCircle(double r) { radius = r; color = "red"; } public double getRadius() { return radius; } public double getArea() { return radius*radius*Math.PI; } } 1. 디폴트 생성자는 어떻게 만드나요,,? 저 코드에 디폴트 생성자가 이미 존재하나요? 2. 이 코드를 실행하려면 어떻게 해야 되죠? 저 상태로 실행 시켜보니 public static void main(String[] args) { 여기서 오류가 나던데..,
## Q1: 디폴트 생성자는 어떻게 만드나요,,? 클래스 내부에 생성자가 없는 경우 내부적으로 디폴트 생성자가 만들어 집니다. ## Q2: 저 코드에 디폴트 생성자가 이미 존재하나요? 아니요, 생성자를 추가하였기 때문에 디폴트 생성자는 존재하지 않습니다. ## Q3: 이 코드를 실행하려면 어떻게 해야 되죠? 필드와 메소드의 위치를 잘 잡아주시면 됩니다. ``` public class TestCircle { public static void main(String[] args) { Circle c1 = new Circle(); CIrcle c2 = new Circle(4); System.out.println(c1.getArea()); System.out.println(c2.getArea()); } } class Circle { private double radius; private String color; public Circle() { radius = 1.0; color = "red"; } public Circle(double r) { radius = r; color = "red"; } public double getRadius() { return radius; } public double getArea() { return radius*radius*Math.PI; } } ```
앗 감사합니다!!! 근데 올려주신 코드 고대로 복붙했는데 오류가 발생해용,, - new Circle(4); - TestCircle() { - TestCircle(double r) { 이 세부분에서요!
생성자 이름을 바꾸었습니다. 다시 한번 확인해보셔요.
잘됩니당 감사해요 ~~!!~
## 도움이 되었다니 다행입니다 클래스를 정의하고 객체를 만드는 방법에 대해서 반드시 개념적으로 그리고 실증적으로 연습을 해주세요. ## 추천 강의 링크 1. 클래스와 객체 (https://cloudstudying.kr/lectures/195) 2. 객체의 생성과 사용 (https://cloudstudying.kr/lectures/196) 3. 생성자와 클래스 타입 (https://cloudstudying.kr/lectures/197)
네 감사합니당 지금 강의 들어볼게요!!
하나만 더 여쭤볼게요,,ㅠ 저 위에 코드를 반경에 관해 double형, 색상과 관련하여 String형의 2개 인수를 갖는 Circle 인스턴스 생성에 관한 세 번째 생성자를 포함시키는 방식으로 클래스 Circle을 수정시키라는데,, public Circle (double r, String c) { 이렇게하고 다음에 뭘 적어야 되는거에욤,,? radius = r; color = "red"; 는 아닌거 같은데...
생성자의 기본적인 역할은 필드 값의 초기화쥬? 그렇다면 입력된 값을 가지고 초기화를 해야겠쥬? ``` public Circle (double radius, String color) { this.radius = radius; this.color = color; } ``` 쉽쥬?
엇 그러네요ㅎㅎㅎㅎ - Q2. 현재 인스턴스 색상 검색을 위해 변수 color에 관한 getter를 추가시킴. 이건 그냥 public String getColor() { return color; 이렇게 하면 될까요? (질문이 많아서 죄송해요ㅇ0ㅇ 총 일곱개 문제를 저 코드에 추가 하면서 해야되서,..)
네 맞아요
- 다음 메서드 테스트를 위해 TestCircle을 다시 작성하라. Circle c4 = new Circle(); // Circle의 인스턴스 생성 c4.setRadius(5.0); // radius의 변경 System.out.println("radius is: " + c4.getRadius()); // getter를 통한 radius 인쇄 c4.setColor(......); // color의 변경 System.out.println("color is: " + c4.getColor()); // getter를 통한 color 인쇄  // setRadius()가 void를 반환하기 때문에 다음 문장이 행해질 수 없음(인쇄 불가능). System.out.println(c4.setRadius(4.0)); 이게 무슨 말인지 모르겠는데,, 뭐부터 시작해야 될까요? 지금 현재 코드는 public class TestCircle2 { public static void main(String[] args) { // TODO Auto-generated method stub Circle c1 = new Circle(); Circle c2 = new Circle(4); System.out.println(c1.getArea()); System.out.println(c2.getArea()); } } class Circle { private double radius; private String color; public Circle() { radius = 1.0; color = "red"; } public Circle(double r) { radius = r; color = "red"; } public Circle(double radius, String color) { this.radius = radius; this.color = color; } public String getColor() { return color; } public double getRadius() { return radius; } public void setRadius(double newRadius) { radius = newRadius; } public void setColor(String newColor) { color = newColor; } public double getArea() { return radius*radius*Math.PI; } } 여기까지 해둔 상태입니당..
메인 메소드 내용을 새롭게 정의해주세요
package javaReportChapter1; public class TestCircle { public static void main(String[] args) { Circle c1 = new Circle(); Circle c2 = new Circle(4); Circle c3 = new Circle(10, "Blue"); Circle c4 = new Circle(); System.out.println(c1); System.out.println(c2); System.out.println(c3); c4.setRadius(100); c4.setColor("Black"); System.out.println("radius is : " + c4.getRadius()); System.out.println("color is : " + c4.getColor()); System.out.println("toString : " + c4.toString()); System.out.println("getArea : " + c4.getArea()); } } public class Circle { private double radius; private String color; // 기본 생성자 public Circle() { this.radius = 1.0; this.color = "red"; } // 오버라이딩 생성자 public Circle(double radius) { this.radius = radius; color = "rad"; } // 오버라이딩 생성자 public Circle(double radius, String color) { this.radius = radius; this.color = color; } // getter public double getRadius() { return radius; } public String getColor() { return color; } // setter public void setRadius(double radius) { this.radius = radius; } public void setColor(String color) { this.color = color; } public double getArea() { return this.radius*this.radius*Math.PI; } // toString @Override public String toString() { return "Circle [radius=" + radius + ", color=" + color + "]"; } } 이 코드에서 public class Circle { 에 빨간밑줄이 그어지는데 이유가 뭔가요 ?? 코드는 제대로 실행돼요!
``` package javaReportChapter1; public class Employee { public static void main(String[] args) { // TODO Auto-generated method stub private int id; private String firstName; private String lastName; private int salary; // 기본 생성자 public Employee() {} // 오버라이드 생성자 public Employee(int id, String firstName, String lastName, int salary) { this.id = id; this.firstName = firstName; this.lastName = lastName; this.salary = salary; } // getter Method public int getId() { return id; } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } public String getName() { return firstName + " " + lastName; } public int getSalary() { return salary; } // setter Method public void setSalary(int salary) { // this를 통해 멤버변수 salary 접근 this.salary = salary; } // 멤버변수 salary * 12 반환 public int getAnnualSalary() { return this.salary*12; } // 멤버변수 salary * percent 반환 public int raiseSalary(int percent) { return this.salary*percent; } // toString @Override public String toString() { return "Employee [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", salary=" + salary + "]"; } } Employee employee = new Employee(1, "Hong", "Gil Dong", 1000); System.out.println("ID : " + employee.getId()); System.out.println("FirstName : " + employee.getFirstName()); System.out.println("LastName : " + employee.getLastName()); System.out.println("Salary : " + employee.getSalary()); System.out.println("toString >> " + employee.toString()); employee.setSalary(2000); System.out.println("setSalary >> " + employee.toString()); System.out.println("getAnnualSalary >> " + employee.getAnnualSalary()); System.out.println("raiseSalary >> " + employee.raiseSalary(10)); } } ``` 여기선 public static void main(String[] args) { 에서 오류나는데 이것도 알려주세요ㅠㅠ
메인 메소드 위치가 잘못됐어요 ;;
네네???? 어떻게 바꿔야해요??ㅜㅜㅜㅠㅠㅠ 바꿔주세요
이메일에 Slack 초대보냈어요 거기로 연락주세요