2017-11-04 2 views
-4

이것은 Waffle.java이며, 컴파일 된 후에 성공적으로 완료됩니다.Java 생성자와 슈퍼가 필요하지만 이미 정의했습니다.

public class Waffle extends Customer{ 

    int waffle_favourite; 
    double amount1; 

     static double Waffle(int waffle_favourite, double amount1){ 

if(waffle_favourite == 1){ 
    System.out.println("You have picked CHOCHOLATE."); 
    System.out.println("The price is RM0.80."); 
     amount1 = 0.80; 
     return amount1;} 

    else if(waffle_favourite == 2){ 
    System.out.println("You have picked HONEY."); 
    System.out.println("The price is RM1.00."); 
     amount1 = 1.00; 
     return amount1;} 

    else if(waffle_favourite == 3){ 
    System.out.println("You have picked YOGURT."); 
    System.out.println("The price is RM1.50."); 
     amount1 = 1.50; 
     return amount1;} 

    else{ 
    System.out.println("Invalid value.");}return amount1;}} 

이것은 Waffle2.java입니다. CMD가 필요했습니다. 생성자는 이미 Waffle.java에 빌드되어 있습니다. 어떻게 해결할 수 있을까요 ?? 위치 생성자 와플 (두 번 INT) :

import java.util.Scanner; 

    public class Waffle2 extends Waffle{ 

    Scanner scan = new Scanner(System.in); 

    int waffle_state; 
    double amount2; 
    double total_amount; 
    double payment; 

    public Waffle2(int waffle_favourite, double amount1, int waffle_state, double amount2, double total_amount){ 
    super(waffle_favourite, amount1); 

    if(waffle_state == 1){ 
     System.out.println(""); 
    System.out.println("You have picked SOFT."); 
    System.out.println("The price is RM1.00."); 
     amount2 = 1.00; 
     total_amount = amount1 + amount2; 
     System.out.println("Your total amount is:RM " + total_amount); 
     System.out.println(""); 

for(int i=0; i <= 1; i++){ 

    System.out.print("Please keyin your payment:RM"); 
    payment = scan.nextDouble(); 

    if(payment < total_amount){ 
     total_amount -= payment; 

    System.out.println("You still need to pay RM:" + total_amount);} 

    else if(payment == total_amount){ 
     System.out.println("Thank you for your order."); 
      break;}    
else{ 
     System.out.println("Invalid value.");}}} 

    else if(waffle_state == 2){ 
     System.out.println(""); 
    System.out.println("You have picked CRISPY."); 
    System.out.println("The price is RM1.20."); 
     amount2 = 1.20; 
     total_amount = amount1 + amount2; 
     System.out.println("Your total amount is:RM " + total_amount); 
     System.out.println(""); 

    for(int i=0; i <= 1; i++){ 

    System.out.print("Please keyin your payment:RM"); 
    payment = scan.nextDouble(); 

    if(payment < total_amount){ 
     total_amount -= payment; 

    System.out.println("You still need to pay RM:" + total_amount);} 

    else if(payment == total_amount){ 
     System.out.println("Thank you for your order."); 
      break;}    
else{ 
     System.out.println("Invalid value.");}}} 
    else if(waffle_state == 3){ 
     System.out.println(""); 
    System.out.println("You have picked CHEWY."); 
    System.out.println("The price is RM1.50."); 
     amount2 = 1.50; 
     total_amount = amount1 + amount2; 
     System.out.println("Your total amount is:RM " + total_amount); 
     System.out.println(""); 

    for(int i=0; i <= 1; i++){ 

    System.out.print("Please keyin your payment:RM"); 
    payment = scan.nextDouble(); 

    if(payment < total_amount){ 
     total_amount -= payment; 

    System.out.println("You still need to pay RM:" + total_amount);} 

    else if(payment == total_amount){ 
     System.out.println("Thank you for your order."); 
      break;}    
else{ 
     System.out.println("Invalid value.");}}}}} 

나는이 클래스를 컴파일 한 후 컴파일이 메시지 심볼 기호를 찾을 수 없습니다 나온다 (waffle_favourite, amount1) 클래스 와플 슈퍼; ^ 1 오류

나는 많은 방법을 시도,하지만 여전히 HELP에 대한 오류, 들으 발생합니다.

+2

코드로 이미지를 게시하지 마십시오 –

+0

'Waffle'에는 생성자가 없습니다. 그것은 정적 인 방법입니다. –

+1

[좋은 질문이 있습니까?] (https://stackoverflow.com/help/how-to-ask)를 참조하십시오. – khelwood

답변

0

Waffle에는 생성자가없는 기본 생성자가없는 생성자가 없습니다. 이것은 :

static double Waffle(int waffle_favourite, double amount1){ 

은 생성자가 아닙니다. 당신은 a) 그것이 static이기 때문에, b) 그것이 리턴 타입을 가지고 있다고 말할 수 있습니다; 생성자에는 둘 다 없다.

이와 같이 생성자가 없기 때문에 super(waffle_favourite, amount1);을 호출 할 수 없습니다. 거기에서 호출 할 수있는 것은 super() 뿐이지 만 명시 적으로 호출 할 필요는 없습니다. 원하는 경우 Waffle.Waffle(waffle_favourite, amount1)을 호출 할 수 있습니다.

하지만 어쨌든 생성자처럼 보이지 않습니다. 생성자 인스턴스를 생성합니다. 당신은 아무것도 건설하지 않고 있습니다, 당신은 단지 매개 변수로 일을하고 있습니다. 이것은 단지 방법 일뿐입니다.

Waffle2는 생성자, 구문, 그러나 다시, 그것은 Waffle2 인스턴스를 구성 관련된 것들하고 아니에요 있나요 : 당신은 멤버 변수를 액세스하는,하지만 그것은 이유보다는 멤버 변수를 사용하여 명확하지 않다 . 생성자가 끝나면 Waffle2 클래스의 불변량을 설정해야합니다.이 경우 Waffle2을 "유효하게"설정해야합니다. 실제로 그러한 규칙이 있습니까? 그렇지 않으면 실제로 생성자가 필요하지 않습니다.

관련 문제