Yana getText()
olmayan statik statik yönteminden diyemezsin.
Nedenini anlamak için ikisi arasındaki farkı anlamalısınız.
Örnek (statik olmayan) yöntemler, belirli bir türdeki (sınıf) nesneler üzerinde çalışır. Bunlar şu şekilde yenilerle oluşturulur:
SomeClass myObject = new SomeClass();
Bir örnek yöntemini çağırmak için, onu örnekte ( myObject
) çağırırsınız :
myObject.getText(...)
Bununla birlikte, statik bir yöntem / alan yalnızca doğrudan tipte çağrılabilir , şöyle söyleyin:
Önceki ifade doğru değil. Bir nesne referansıyla statik alanlara da atıfta bulunulabilir, myObject.staticMethod()
ancak bu tavsiye edilmez çünkü bunların sınıf değişkenleri olduklarını netleştirmez.
... = SomeClass.final
Ve ikisi farklı veri alanlarında (örnek verileri ve sınıf verileri) çalıştıkları için birlikte çalışamazlar.
Deneyip açıklamama izin ver. Bu sınıfı düşünün (psuedocode):
class Test {
string somedata = "99";
string getText() { return somedata; }
static string TTT = "0";
}
Şimdi şu kullanım durumum var:
Test item1 = new Test();
item1.somedata = "200";
Test item2 = new Test();
Test.TTT = "1";
Değerler neler?
İyi
in item1 TTT = 1 and somedata = 200
in item2 TTT = 1 and somedata = 99
Başka bir deyişle, TTT
tipin tüm örnekleri tarafından paylaşılan bir datumdur. Bu yüzden söylemenin bir anlamı yok
class Test {
string somedata = "99";
string getText() { return somedata; }
static string TTT = getText(); // error there is is no somedata at this point
}
Asıl sorun, neden olduğu TTT statik ya da neden gettext () statik değildir?
Kaldır static
ve bu hatayı geçmelidir - ancak türünüzün ne yaptığını anlamadan, bir sonraki hataya kadar sadece yapışkan bir alçıdır. getText()
Statik olmamasını gerektiren gereksinimler nelerdir ?