这里对java来说真的很新。我试图建立在动物的抽象类上,并将其扩展到Ducks的子类。然后,我将创建一个对象ducksworth,该对象证明Duck继承了超类动物的方法,并且可以调用对抽象类变量的引用。当我尝试在Netbeans中运行代码时,即使类AllAnimals包含主调用,它也找不到主方法调用。任何帮助,将不胜感激?该代码完全写在Netbeans的单个文件中。
理想情况下,我希望输出的是“羽毛”
abstract class Animal {
String FUR= "fur";
String FEATHER = "feather";
String SCALE = "scale";
String SHELL = "shell";
String SKIN = "skin";
abstract String getCovering( );
abstract void makeSound();
abstract boolean canFly( );
}
class Duck extends Animal {
String covering = FEATHER;
String sound = "quack";
boolean flight = true;
String getCovering() {
System.out.println("Ducks are covered in " + covering);
return covering;
}
void makeSound() {
System.out.println(sound);
}
boolean canFly() {
return flight;
}
}
class allanimals {
public static void main(String[] args) {
Duck ducksworth = new Duck();
ducksworth.getCovering();
}
}
正如大家所说。将实际课程放在下面。
已完成的更改:
文件名:AllAnimals.java
abstract class Animal {
String FUR= "fur";
String FEATHER = "feather";
String SCALE = "scale";
String SHELL = "shell";
String SKIN = "skin";
abstract String getCovering( );
abstract void makeSound();
abstract boolean canFly( );
}
class Duck extends Animal {
String covering = FEATHER;
String sound = "quack";
boolean flight = true;
String getCovering() {
System.out.println("Ducks are covered in " + covering);
return covering;
}
void makeSound() {
System.out.println(sound);
}
boolean canFly() {
return flight;
}
}
public class AllAnimals {
public static void main(String[] args) {
Duck ducksworth = new Duck();
ducksworth.getCovering();
}
}
您如何运行项目?
将每个类都放在文件中是最简单的,因此您可以使用main
https://www.protechtraining.com/content/java_fundamentals_tutorial-hello_world来简单地编译和运行该类
或者,在这里看看:Java: Multiple class declarations in one file
https://www.quora.com/Can-we-keep-more-than-one-class-in-a-single-java-file
这不是我推荐的JDK 8惯用语。首选接口代替抽象类。在适当的位置添加默认方法。
[什么时候将Animal
的结尾视为继承示例?显然不是今天。
我可能会这样做:
public interface Animal {
String getCovering();
void makeSound();
boolean canFly();
}
public class Duck implements Animal {
public String getCovering() { return "feathers"; }
public void makeSound() { return "quack"; }
boolean canFly() { return true; }
}
[JUnit的了解还为时不早,
public class AnimalTest {
@Test
public void testList() {
// setup
List<Animal> animals = Collections.singletonList(new Duck());
// exercise
// assert
Assert.assertEquals("feathers", animals.get(0).getCovering());
Assert.assertEquals("quack", animals.get(0).makeSound());
Assert.assertTrue(animals.get(0).canFly());
}
}
文件中至少一个类应该是公共的,在这种情况下,最好将文件放入allanimals.java,并且必须将该类标记为公共的。