[]

Java hata bulma sorusu

Gecenin bu saatinde şu örnekte hataları bulup bana kısaca açıklayabilecek olan var mıdır ?

Sorunun çözümü yok dolayısıyla emin olamıyorum bulduğum hatalar doğru mu değil mi ...



2. (15 pt) Find only five compliation errors in the following program stored in the file E.java. Make brief explanations for each one. How do you fix these errors? Finding more than five errors results in loss of grades. For each error together with the line number provide a breif explanation. Line numbers are not part of the program.
1 abstract class A {
2 public void methodA();
3 } // end class A
4 class B extends A {
5 private void methodB(){System.out.println();}
6 } // end class B
7 class C extends B {
8 private void methodA(){System.out.println();}
9 public A methodC(B b){
10 return b;}
11 public C(int a){
12 b = a; }
13 } // end class C
14 class D extends C {
15 private final int x;
16 private int y;
17 public D(int a) { ++a;super(a);}
18 public static void methodD(){System.out.println(y);}
19 public void methodD1(int a) { x = a;}
20 } // end class C
21 public class E {
22 public static void main(String [] args) {
23 A a new A();
24 A a1 = new C(1).methodC(new B());
25 D d1 = new D(2);
26 } // end main
27 } // end class E
Error Line Number Explain
1


2


3


4


5

 
23: "A a new A();" ilk basta "A a = new A()" olmali ama bu da calismaz, Cunku A bir abstract class bu nedenle bundan bir obje yaratilmaz. Bu satir gereksiz ve hatali
2: methodA diye bir method yaratilmis, bu method abstract bir sinif icinde. 1. satirda tanimlanan abstract sinif en az bir abstract method barindirmali. yani methodA abstract olmali su sekilde "abstract public void methodA();"
4: 2.satirda methodA abstract yapmak zorunda kaldigimiz icin bir alt sinifta o methodu uygulamak gerekir. yani class b icine methodA yazmamiz zorunluluk oldu. su sekilde "public void methodA() {}"
8: class B icinde methodA tamimladik ve bunu public yapmak zorundaydik. cunku abstract methodA da public olarak tanimlanmistir. class C da ise methodA private olarak tanimlanmis, yani methodun erisebilirligini daraltiyor. alt sinif extend ettigi sinifin methodunun erisebilirligini daraltamaz. o nedenle bu satir su sekilde olmali "public void methodA(){System.out.println();}"
12: b diye bir degiskene a referansi atanmis. Ama b hicbir yerde tanimlanmamis. tahminime gore (isimden dolayi) class B icinde "int b;" gibi bir tanimlama yapmak gerekir.
17: "super(a);" super class cagrisi constructor icinde ilk satirda cagirilmali yani "super(++a);" olmali
18: y referansi cagiriilmis ve methodD static bir method. y referansi da static olmasli, ya da methodD static olmamali ikisinden biri. cunku static methodlar sadece static method, class, referans cagirabilir, instance cagiramaz.
19: x degerine a referansi atanmis ama x 15. satirda final olarak tanimlanis. ya 15. satirdaki final silinmeli, ya da 19. satir tamamen silinmeli. Cunku final olarak tanimlanmis bir hafiza alani degistirilemez.

Final kod:

abstract class A {
abstract public void methodA();
} // end class A

class B extends A {
int b;
public void methodA() {
}
private void methodB() {
System.out.println();
}
} // end class B
class C extends B {
public void methodA() {
System.out.println();
}
public A methodC(B b) {
return b;
}
public C(int a) {
b = a;
}
} // end class C
class D extends C {
private int x;
private int y;
public D(int a) {
super(++a);
}
public void methodD() {
System.out.println(y);
}
public void methodD1(int a) {
x = a;
}
} // end class C
public class E {
public static void main(String [] args) {
A a1 = new C(1).methodC(new B());
D d1 = new D(2);
} // end main
27 } // end class E
  • emrahday  (24.07.17 12:23:58 ~ 15:16:54) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.