1. 文件 Showstr.java
 里面方法 public  void usestr(String str1){...}
----
然后是 class Showusers extends Showstr{...里如果要引用 usestr时候
Showstr.usestr("str1") 无法引用非静态...子类有啥办法引用非静态方法么?2,,  还是上面的 如果全都设置成static
如果 
Showstr s1=new Showstr();
Showstr s2=new Showstr();
Showstr s3=new Showstr();s1.name=A;  name 是str的一个属性
s2.name=B;
s3.name=C;
后于是 s1.name s2.name s3.name全都成C了,,虽然指向地址都不同.
这个有啥办法没,,改动一个不要牵扯到所有

解决方案 »

  1.   

    呵呵
    第一个问题:只能用static的,没有其他办法
    第二个问题:
    如果 
    Showstr s1=new Showstr(); 
    Showstr s2=new Showstr(); 
    Showstr s3=new Showstr(); 就不要再使用static了
      

  2.   

    orz...这个晴天霹雳啊,,,,其实我就是被这个矛盾给尴尬住了,建立子类时候要求static,,后面使用时候一改全改,,
      

  3.   

    Showstr.usestr("str1") 无法引用非静态... 你这个是用类名去调用方法,方法必须提静态的。
    如果你想调用非静态的方法,必须用对象去调用啊。
    如:
    Showstr s=new Showstr();
    s.usestr("str1");
      

  4.   

    3q,ls,,不过我是在建立子类中, 可以这么建立对象调用吗? 因为2 的缘故,,想尽量避免设置成static型..
      

  5.   

    第二个问题,
    不能把name设为静态的。静态的属性是类属性,不管这个类有多少个对象,这些对象只能看到一份静态的属性。所以如果name是静态的,你三个对象只能有看到一个name.
      

  6.   

    //Showstr.java public class Showstr{
     public Showstr(){
       name="0";
       str="1";
     }
     public String name;
     public String str;
     public void usestr(String name1,String str1){ 
       System.out.print("name="+name,"str="+Str1);
     }
    }//Showusers.java
    public Showusers extends Showstr{
     public Showusers(){
        timer=2
     }
     public int timer;
     public void usestr(){
       for(int i=0;i<timer1;i++){
       Showstr.usestr((Showstr.name),(Showstr.str));   //结果因为不是static方法不能用,想问下有什么办法可以调用方法而不采用static
       }
    }//Mmain.java
    public class Mmain{
     public static void main(String args[]){
      Showusers s1=new Showusers();
      Showusers s2=new Showusers();
      Showusers s3=new Showusers();
      s1.name="A";
      s1.str="ZZZ";
      s1.timer=2;
      s2.name="B";
      s2.str="XXX";  
      s2.timer=3;
      s3.name="C";
      s3.str="VVV";
      s3.timer="4";
      s1.usestr();
      s2.usestr();
      s3.usestr();   //  如果static方法,,,结果华丽的显示的全是s3结果,,s1,s2被覆盖~~orz
     }
    }
      
      

  7.   

    //Showusers.java 里timer=2少个;ps:我是小白,努力进化中~~
      

  8.   

    public void usestr(){ 
      for(int i=0;i <timer1;i++){ 
      Showstr.usestr((Showstr.name),(Showstr.str));  //结果因为不是static方法不能用,想问下有什么办法可以调用方法而不采用static 
      } 
    } 你是想把你建立的对象都做某种操作是吧,这样不行的.
    你可以把你建立的对象放到一个容器中,比如数组、List、Set中,这样才能对多个对象操作。public class Mmain{ 
    public static void main(String args[]){ 
      Showusers[]  ss=new Showusers[3];
      Showusers s1=new Showusers(); 
      Showusers s2=new Showusers(); 
      Showusers s3=new Showusers(); 
      s1.name="A"; 
      s1.str="ZZZ"; 
      s1.timer=2; 
      s2.name="B"; 
      s2.str="XXX";  
      s2.timer=3; 
      s3.name="C"; 
      s3.str="VVV"; 
      s3.timer="4"; 
      ss[0]=s1;
      ss[1]=s2;
      ss[3]=s3;
      for(int i=0;i<ss.length;i++){
            ss[i].userstr();
      }
     }