Sana bir sorum olacakti bu konu hakkinda….! Asagida iki sinifim var polymorphism1(ana sinif) ve polymorphism2(alt sinif) adinda…..
[source language=”java”]
public class polymorphism1 {
public void mesaj(){
System.out.println("polymorphism1");
}
public static void cokBicim(polymorphism1 object){
object.mesaj();
}
public static void main(String[] args){
polymorphism1 obj1 = new polymorphism1();
polymorphism1.polymorphism2 obj2 = new polymorphism1().new polymorphism2();
cokBicim(obj1);
cokBicim(obj2);
}
public class polymorphism2 extends polymorphism1 {
public void mesaj(){
System.out.println("polymorphism2");
}
}
}
[/source]
bu isliyor ….. fakat bir sinif daha eklemek istiyorum … oda polymorphism3 extends polymorphism2 sinifi olsun. Metot yine ayni ve main de obj3 ile bu metotu cagirmak istiyorum fakat hata veriyor ;(
Acaba 2.ci alt sinif yazilamaz mi? veya enfazla kac sinif ic ice yazabilirim boyle?
saygilarimla,
Volkan
Özcan Acar
Nasil bir hata aliyorsun?
volkan
No enclosing instance of type polymorphism1 is available due to some intermediate constructor invocation
Özcan Acar
Su sekilde yapmalisin. Sonuc itibari ile üst bir siniftaki metodu kosturarak, bu metodun alt siniftaki implementasyonuna erisim olup, olmadigini kontrol etmek istiyorsun. Bu sebepten dolayi nesnenin tanimlanma sekli üst sinif veri tipinde olmali.
[source language=”java”]
public class polymorphism1 {
public void mesaj() {
System.out.println("poli1");
}
public static void cokBicim(final polymorphism1 object) {
object.mesaj();
}
public static void main(final String[] args) {
final polymorphism1 obj1 = new polymorphism1();
final polymorphism1 obj2 = new polymorphism1().new polymorphism2();
final polymorphism1 obj3 = new polymorphism1().new polymorphism3();
cokBicim(obj1);
cokBicim(obj2);
cokBicim(obj3);
}
public class polymorphism2 extends polymorphism1 {
@Override
public void mesaj() {
System.out.println("poli2");
}
}
public class polymorphism3 extends polymorphism1 {
@Override
public void mesaj() {
System.out.println("poli3");
}
}
}
[/source]
volkan
evet boyle calistirdim …. fakat simdi baska bir uygulama gerceklestirmek istiyorum… Hersey ayni… fakat siniflar direk polymorphism1 sinifini kalitim almak yerine, birbirlerine ust sinif olarak kalitim olsun istedim… boyle nasil yaparim?
Yorumlar
“Java’da Polimorfizm Nasıl İşler?” için 5 yanıt
Merhaba Ozcan,
Sana bir sorum olacakti bu konu hakkinda….! Asagida iki sinifim var polymorphism1(ana sinif) ve polymorphism2(alt sinif) adinda…..
[source language=”java”]
public class polymorphism1 {
public void mesaj(){
System.out.println("polymorphism1");
}
public static void cokBicim(polymorphism1 object){
object.mesaj();
}
public static void main(String[] args){
polymorphism1 obj1 = new polymorphism1();
polymorphism1.polymorphism2 obj2 = new polymorphism1().new polymorphism2();
cokBicim(obj1);
cokBicim(obj2);
}
public class polymorphism2 extends polymorphism1 {
public void mesaj(){
System.out.println("polymorphism2");
}
}
}
[/source]
bu isliyor ….. fakat bir sinif daha eklemek istiyorum … oda polymorphism3 extends polymorphism2 sinifi olsun. Metot yine ayni ve main de obj3 ile bu metotu cagirmak istiyorum fakat hata veriyor ;(
Acaba 2.ci alt sinif yazilamaz mi? veya enfazla kac sinif ic ice yazabilirim boyle?
saygilarimla,
Volkan
Nasil bir hata aliyorsun?
No enclosing instance of type polymorphism1 is available due to some intermediate constructor invocation
Su sekilde yapmalisin. Sonuc itibari ile üst bir siniftaki metodu kosturarak, bu metodun alt siniftaki implementasyonuna erisim olup, olmadigini kontrol etmek istiyorsun. Bu sebepten dolayi nesnenin tanimlanma sekli üst sinif veri tipinde olmali.
[source language=”java”]
public class polymorphism1 {
public void mesaj() {
System.out.println("poli1");
}
public static void cokBicim(final polymorphism1 object) {
object.mesaj();
}
public static void main(final String[] args) {
final polymorphism1 obj1 = new polymorphism1();
final polymorphism1 obj2 = new polymorphism1().new polymorphism2();
final polymorphism1 obj3 = new polymorphism1().new polymorphism3();
cokBicim(obj1);
cokBicim(obj2);
cokBicim(obj3);
}
public class polymorphism2 extends polymorphism1 {
@Override
public void mesaj() {
System.out.println("poli2");
}
}
public class polymorphism3 extends polymorphism1 {
@Override
public void mesaj() {
System.out.println("poli3");
}
}
}
[/source]
evet boyle calistirdim …. fakat simdi baska bir uygulama gerceklestirmek istiyorum… Hersey ayni… fakat siniflar direk polymorphism1 sinifini kalitim almak yerine, birbirlerine ust sinif olarak kalitim olsun istedim… boyle nasil yaparim?