因为main()函数是static的,static函数不能调用其他非static函数。
语法就是这么规定的。

解决方案 »

  1.   

    你已经
    test1 x=new test1();
        x.fun(); 应该是fun方法不写static也可以用的啊
      

  2.   

    test1 x=new test1();
        x.fun(); 应该是fun方法不写static也可以用的啊
    ----------------------------问题是不行,我认为这存在语义冲突!!
      

  3.   

    楼上没看见:public class Untitled1 extends test1{
    楼主的程序中Untitled1继承了test1, fun()现在也是Untitled1的成员函数了。
      

  4.   

    因为main()函数是static的,static函数不能调用其他非static函数。
    语法就是这么规定的。-----------------------谁说不行,这么调用就OK,而且符合语义Untitled1 x=new Untitled1()
    x.fun();           //有没有static都可以进行调用
      

  5.   

    关注! 我这个例子通过,想不通楼主的程序为何不行!class A {
    void fun() {
    System.out.println("hello, world");
    }
    }public class B extends A {
    public static void main(String[] args) {
    A a = new A();
    a.fun();
    B b = new B();
    b.fun();
    }
    }最后打印:
    hello, world
    hello, world
      

  6.   

    我的两个.class不再同一个package
      

  7.   

    楼上没看见:public class Untitled1 extends test1{
    楼主的程序中Untitled1继承了test1, fun()现在也是Untitled1的成员函数了。----------------------------------既然fun都已经是class Untitled1的成员了那为什么只可以调用static的?
      

  8.   

    Untitled1 x=new Untitled1();
        x.fun();    
    试下
      

  9.   

    因为方法成员设成了protected,这个方法只能在类里面调用
      

  10.   

    protected static void fun()改为public static void fun()就可以了
      

  11.   

    protected关键字意味着“可由继承者访问,亦可由包内其他元素访
    问”楼主的不就是继承关系吗,怎么不可以,晕,糊涂了。。
      

  12.   

    你的两个类不在一个包里面,对于非静态的保护方法需要实例化父对象以后才能调用,这时候就会产生包的访问权限问题。而对于静态的保护方法,他不需要实例化父类就能够调用,所以能够被子类所继承。你可以通过子类的.fun()来访问,而不需要实例化子类或父类。
      

  13.   

    搞不懂,为什么与static有关
    关注