2010-08-17 13 views

cevap

20

child.agölgelerparent.a (veya gizler).

Yasal Java, ancak kaçınılmalıdır. IDE'nizin size bu konuda bir uyarı vermesini beklerdim.

Not: Bununla birlikte, bu yalnızca bir sorundur, çünkü zaten dünyaya değişken değişkenini zaten maruz bıraktınız. Tüm değişkenlerinizin başlangıçta özel olduğundan emin olursanız (alanların uygulanmasından yöntemlerin API'sini ayırarak), hem ebeveynin hem de çocuğun aynı alan adlarına sahip olması fark etmez. Ebeveynlerin alanlarını yine de görebilmek. Bir yöntemi çocuğunuzdan ebeveyne taşırsanız ve bu genellikle okunabilirlik açısından harika değilse, saklanma durumundan daha iyidir.

4

Kuzeninizle evlenmek gibi bir şey; Yasal, ama tavsiye edilmez. alt sınıf beyanı üst sınıf beyanı gizler olarak

Bu durum bazı sorunlara her türlü yol açabilir.

+0

vahşi kamu değişkeni alarak alabilirsiniz sadece parası var ......... – Andrew

9

Bu, gölgeleme denir ve geliştiriciler için sorunlara neden olabilir. Senin durumunda

:

Child child = new Child(); 
child.a = 1; 
System.out.println(child.a); 
System.out.println(((Parent)child).a); 

1 
0 
0

herhangi derleme hatası veya çalışma zamanı hatası olmayacak basacaktır. İşte

public class Parent { 
private String name; 
private int age; 
} 

public class Child extends Parent { 
String parent; 
public int age; 
} 

Main sınıftan child.age erişmek mümkün olacak ... Yani türetilmiş sınıfa

İlgili konular