2017-02-07 2 views
-4

Hawk와 같은 여러 종에 의해 상속되는 추상 클래스 Animal을 만들고 싶습니다.Java 추상 클래스

abstract public class Animal { 

     private String name; 
     abstract String sound(); 
     abstract String movement(); 
     public void set_name(String s){ 
     name=s; 
     } 
     public String get_name(){ 
     return name; 
     } 
    } 
    public Hawk extends Animal{ 
     public String sound(){ 
     return "Shriek" ; 
     } 
     public String movement(){ 
     return "Fly" ; 
     } 

그러나, 컴파일러 나 방법 사운드()와 동물에서 발견되는 움직임을() 중복 말하는 유지, 왜 이런 일이 것이다 : 나는이 다음나요? 나는 이것을 구현하려하고있다.

+0

코드를 잘못 읽었습니까? 또는 '동물'내부에'Hawk'가 중첩되어 있습니까? 또한 경고 또는 오류 메시지? – AntonH

+0

'@ Override' 사용 – nullpointer

+2

'호크'앞에서'class'가 누락 된 것처럼 보입니다. –

답변

3

변경 :

public Hawk extends Animal 

class Hawk extends Animal 

에 당신은 단지 된 .java 파일에 하나 개의 공용 클래스를 가질 수 있습니다. "class"키워드를 잊어 버렸습니다.

+0

좋아요! 그렇다면 제 대답을 받아주십시오. – JustinKSU

2

코드에 두 가지 수정이 필요합니다. 1

호크

클래스, 그래서 동일한 된 .java 파일에있을 수 없습니다 public class Hawk extends Animal

2

두 public 클래스로 호크를 선언합니다. 다음과 같이

그래서, 올바른 코드는 다음과 같습니다 -

abstract class Animal { 
     private String name; 
     abstract String sound(); 
     abstract String movement(); 
     public void set_name(String s){ 
     name=s; 
     } 
     public String get_name(){ 
     return name; 
     } 
    } 

    public class Hawk extends Animal{ 
     public String sound(){ 
     return "Shriek" ; 
     } 
     public String movement(){ 
     return "Fly" ; 
     } 
    } 
+0

이처럼 내부 클래스로 선언되면'Hawk'가 존재할 수있는 유일한 방법은 외부 'Animal'을 사용하는 것입니다. 이것은 당신이 원하는 것이 아닙니다. 커플 링을 피하기 위해서는 호크를 정적으로 만들어야합니다. – ControlAltDel

0

이 코드해야합니다! 함께 공개 수업을 두 개!

abstract class Animal { 
     private String name; 
     abstract String sound(); 
     abstract String movement(); 
     public void set_name(String s){ 
     name=s; 
     } 
     public String get_name(){ 
     return name; 
     } 
    } 

    public class Hawk extends Animal{ 
     @override 
     public String sound(){ 
     return "Shriek" ; 
     } 
     @override 
     public String movement(){ 
     return "Fly" ; 
     } 
    } 
관련 문제