新手送分题
package SpeakDemo;
public class SpeakDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Dog dog= new Dog();
Cat cat= new Cat();
Duck duck= new Duck();
dog.dospeak();
cat.dospeak();
duck.dospeak();
}
public class Dog{
public void dospeak(){
System.out.println("Wang Wang!!!!");
}
}
public class Cat{
public void dospeak(){
System.out.println("Miao Miao!!!!");
}
}
public class Duck{
public void dospeak(){
System.out.println("Ga Ga!!!!");
}
}
}
在主函数 new Dog(); new Cat(); new Duck(); 三处报错; 当我将下面三个函数 分成三个 与 SpeakDemo 并列的包,然后 import 进去时 就不报错。 求解上面代码为何报错 !!!!
[解决办法]
你的主函数是静态的 而你下面的类是非静态的 所以会报错 你只要将下面的类改为静态的就可以了
public class SpeakDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Dog dog= new Dog(); Cat cat= new Cat(); Duck duck= new Duck(); dog.dospeak(); cat.dospeak(); duck.dospeak(); } public static class Dog{ public void dospeak(){ System.out.println("Wang Wang!!!!"); } } public static class Cat{ public void dospeak(){ System.out.println("Miao Miao!!!!"); } } public static class Duck{ public void dospeak(){ System.out.println("Ga Ga!!!!"); } }}
[解决办法]
修改方式1:修改main方法
public static void main(String[] args) { /* * 你这种定义类的方式,是非静态内部类,它的存在依靠外部类来定义 * 关于它的声明,是不能使用new关键字的,需要使用“外部类对象.new 内部类()”的方式 * 关于更多内部类的知识,你可以自行查看资料 */// Dog dog= new Dog();// Cat cat= new Cat();// Duck duck= new Duck(); // 提供给你一种解决的方法 SpeakDemo sd = new SpeakDemo(); Dog dog = sd.new Dog(); Cat cat = sd.new Cat(); Duck duck = sd.new Duck(); dog.dospeak(); cat.dospeak(); duck.dospeak(); } public class Dog { public void dospeak() { System.out.println("Wang Wang!!!!"); } } public class Cat { public void dospeak() { System.out.println("Miao Miao!!!!"); } } public class Duck { public void dospeak() { System.out.println("Ga Ga!!!!"); } }
[解决办法]
修改内部类的声明:
public static void main(String[] args) { Dog dog= new Dog(); Cat cat= new Cat(); Duck duck= new Duck(); dog.dospeak(); cat.dospeak(); duck.dospeak(); } /* * 将所有的内部类定义为静态内部类 * 使它们不依靠对象存在,而属于这个类 */ static public class Dog { public void dospeak() { System.out.println("Wang Wang!!!!"); } } static public class Cat { public void dospeak() { System.out.println("Miao Miao!!!!"); } } static public class Duck { public void dospeak() { System.out.println("Ga Ga!!!!"); } }