首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

新手送分题解决方法

2012-01-19 
新手送分题package SpeakDemopublic class SpeakDemo {/** * @param args */public static void main(Str

新手送分题
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 进去时 就不报错。 求解上面代码为何报错 !!!!

[解决办法]
你的主函数是静态的 而你下面的类是非静态的 所以会报错 你只要将下面的类改为静态的就可以了

Java code
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方法
Java code
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!!!!");        }    }
[解决办法]
修改内部类的声明:
Java code
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!!!!");        }    } 

热点排行