2011-03-15 22 views
9

Eğer soyut bir sınıf yazıyorsam, soyut sınıftaki bir sınıfı yerleştiririm, soyut sınıfın herhangi bir alt sınıfındaki yöntemlerine erişebilir miyim? Ben Elbetteİç içe geçmiş sınıflı soyut sınıf bu mümkün mü?

+0

:-) kolayca kendiniz bunu deneyebilirdim? Sınıf A'nın soyut, sınıf B'nin A iç sınıfı olduğunu (A? statik mi?) ve C sınıfının A dışına uzandığından emin değil misiniz? ya da B uzanır? Lütfen biraz daha spesifik olun. –

cevap

9

.. yerde yanıt bulamıyor, iç sınıflara erişim değiştiricileri alanları ve yöntemleri aynı kurallara uyar. Sizin sınıf, soyut ya da somut olup olmadığı önemli değildir sürece iç içe sınıf ya public, protected veya, alt sınıf erişebilir alt sınıf aynı pakette ve iç sınıf paket özel (varsayılan erişim değiştirici) olduğu gibi o. İç içe sınıf en az korunuyorsa (yöntemler kamu veya aynı paket içinde olup gizli olmayan sürece)

public abstract class AbstractTest { 

    // all subclasses have access to these classes 
    public class PublicInner {} 
    protected class ProtectedInner {} 

    // subclasses in the same package have access to this class 
    class PackagePrivateInner {} 

    // subclasses do not have access to this class 
    private class PrivateClass {} 

} 
+0

Mükemmel, mükemmel tanım. – providence

0

, onun yöntemlerini erişebilir.

Ama yapısal bir örneği verebilir misiniz

1
class Abstract { 
    modifier1 class Nested { modifier2 int i = 0; } 
    Abstract() { 
     Nested n = new Nested(); 
     n.i = 1; 
    } 
} 

class Sub extends Abstract { 
    Sub() { 
     Nested n = new Nested(); 
     // have access as long you not choose "private" 
     // for `modifier1` or `modifier2`: 
     n.i = 5; 
    } 
} 
İlgili konular