2015-08-03 30 views
6

Tek bir sınıfta bir yöntemin geçersiz kılınmasının mümkün olmadığını biliyorum. Ancak statik olmayan bir yöntemi statik olarak kullanmanın bir yolu var mı? Örneğin, sayı ekleyen bir yöntem var. Bu yöntemin bir nesne ile ve aynı zamanda o olmadan yararlı olmasını istiyorum. Başka bir yöntem oluşturmadan böyle bir şey yapmak mümkün mü?Aynı adda bir sınıfta statik ve statik olmayan yöntem JAVA

DÜZENLEMEK: DİĞER: Demek istediğim, eğer bir yöntemi statik yaparsam, argümanları almam gerekecek ve zaten ayarlanmış değişkenlere sahip bir nesne oluşturursam, nesnemde aynı argümanlarla arama işlevini çok rahatsız edici olur tekrar.

public class Test { 

    private int a; 
    private int b; 
    private int c; 

    public Test(int a,int b,int c) 
    { 
     this.a = a; 
     this.b = b; 
     this.c = c; 
    } 

    public static String count(int a1,int b1, int c1) 
    {   
     String solution; 
     solution = Integer.toString(a1+b1+c1); 
     return solution; 
    } 


    public static void main(String[] args) { 

     System.out.println(Test.count(1,2,3)); 
     Test t1 = new Test(1,2,3); 
     t1.count(); 
    } 

} 

Kodun yanlış olduğunu biliyorum ama ne yapmak istediğimi göstermek istedim.

+0

Neden nesnede statik olarak adlandırmıyoruz? –

+0

Denediğin şey ne? Lütfen kodunuzu gönderin. –

+0

En iyi seçeneğiniz yöntemin statik olmasını sağlamaktır, böylece yöntemin örnek değişkenleri değiştirmesi gerekmediği varsayılarak statik veya durağan olmayan bir durumla karşılaşabilirsiniz (bu mantıklı olmaz). Bize daha fazla bilgi verirseniz size daha fazla yardımcı olabiliriz. –

cevap

8

Bu yöntem bir nesne ile kullanışlı ve aynı zamanda onsuz olmak istiyorum. Başka bir yöntemi oluşturmadan böyle bir şey yapmak mümkün mü?

Sen başka bir yöntem oluşturmak zorunda, ancak yalnızca gerekir gelecekte mantığını değiştirmek istiyorsanız Kodu tekrarlamadan kalmaması statik olmayan yöntem, statik yöntemi çağırmak yapabilir ve tek bir yerde yapmak.

public class Test { 
    private int a; 
    private int b; 
    private int c; 

    public Test(int a, int b, int c) { 
     this.a = a; 
     this.b = b; 
     this.c = c; 
    } 

    public String count() { 
     return count(a, b, c); 
    } 

    public static String count(int a1, int b1, int c1) { 
     String solution; 
     solution = Integer.toString(a1 + b1 + c1); 
     return solution; 
    } 

    public static void main(String[] args) { 
     System.out.println(Test.count(1, 2, 3)); 
     Test t1 = new Test(1, 2, 3); 
     System.out.println(t1.count()); 
    } 
} 
+0

Peki bu tam olarak ne yapmak istedim.Her ikisine de sahip olduğumu bilemedim, bu: 'public String count()' ve bu 'genel statik Dize sayısı (int a1, int b1, int c1)' yasaldır – milo

6

Ancak statik olmayan bir yöntemi statik olarak kullanmanın bir yolu var mı?

Hayır, bu mümkün değil.

Statik ve statik olmayan bir bağlamda kullanılacak bu yönteme ihtiyacınız varsa, static'u yapın. Ancak, yapılandırması, ancak mümkün değildir.

+0

Statik yöntemimin çalışması için argümanlara ihtiyaç duyduğunda onu statik bağlamda nasıl kullanmalıyım? Java'da nesne değişkenlerini yönteme kopyalayacak bazı işlevler? – milo

+0

Bunun nasıl bir soru olduğunu anlamıyorum. Statik bir yönteminiz varsa, onu bir örnekten çağırsanız bile, aslında statik olmayan bir bağlamda çalışmaz (aka, nesne alanlarına erişemezsiniz). –

0

Statik yaptıktan sonra nesne ile ve onsuz kullanılabilir.

public class MyTest() { 
    public static int add() { 
     System.out.println("hello"); 
    } 
} 

MyTest.add(); //prints hello 

MyTest myobject = new MyTest(); 
myobject.add(); //prints hello 
+0

Düşündüm çünkü bu yorumlarda ve yanıt olarak önerildi. Ayrıca, kodunuzu doğru şekilde biçimlendirmeyi bile başaramadınız. –

+1

Ayrıca, bu soruya cevap vermiyor. Cevap hayır". Bahsetmiyorsun. – darijan

+0

@darijan i OPS probelem'i çözmek için cevap verdi, evet ya da – Panther

İlgili konular