OBender
Уже с Приветом
Posts: 1564 Joined: 27 Nov 2001 10:01
Location: Live free or die
Post
by OBender » 05 Dec 2003 17:32
И так, скомпилируется ли следующий код и если нет то где выдаст ошибку, и если выдаст ошибку то что сделать что бы не выдавал?
Code: Select all
file ./p1/C1.java package p1; public class C1 { protected C1() { } //protected constructor } ----------------------------------------------- file ./p2/C2.java package p2; import p1.C1; public class C2 extends C1 { public C2(){ super(); } public void amethodA(){ C1 c = new C1(){ public void methodX(){} }; } public void amethodB(){ C1 c = new C1(); } }
Интересный вы человек! Все у вас в порядке. Удивительно, с таким счастьем - и на свободе. (C) О.Бендер
igrok
Уже с Приветом
Posts: 291 Joined: 25 Sep 2001 09:01
Post
by igrok » 05 Dec 2003 19:51
Еще одна интересная формулировка, аналогичного вопроса:
Code: Select all
package p1; public class C1 { protected void m1() {} protected void m2() {} } ------------- package p2; import p1.C1; public class C2 extends C1 { protected void m1() {} } ------------- package p2; import p1.C1; public class C3 { public void caller() { C1 c1 = new C1(); C1 c2 = new C2(); C2 c3 = new C2(); c1.m1(); // line #1 c2.m1(); // line #2 c3.m1(); // line #3 c3.m2(); // line #4 } }
Сколько ошибок выдаст компилятор и в каких страках?
Last edited by igrok on 05 Dec 2003 22:52, edited 1 time in total.
hooch
Уже с Приветом
Posts: 1169 Joined: 16 Jan 2003 23:23
Post
by hooch » 05 Dec 2003 22:12
OBender wrote: И так, скомпилируется ли следующий код и если нет то где выдаст ошибку, и если выдаст ошибку то что сделать что бы не выдавал?
Code: Select all
file ./p1/C1.java package p1; public class C1 { protected C1() { } //protected constructor } ----------------------------------------------- file ./p2/C2.java package p2; import p1.C1; public class C2 extends C1 { public C2(){ super(); } public void amethodA(){ C1 c = new C1(){ public void methodX(){} }; } public void amethodB(){ C1 c = new C1(); } }
C1 c = new C1(); - constructor is not visible, make C1() constructor public.
hooch
Уже с Приветом
Posts: 1169 Joined: 16 Jan 2003 23:23
Post
by hooch » 05 Dec 2003 22:21
igrok wrote: Еще одна интересная формулировка, аналогичного вопроса:
Code: Select all
package p1; public class C1 { protected void m1() {} protected void m2() {} } ------------- package p2; import p1.C1; public class C2 extends C1 { protected void m1() {} } ------------- package p2; import p1.C1; public class C3 { public void caller() { C1 c1 = new C1(); C1 c2 = new C2(); C2 c3 = new C2(); c1.m1(); c2.m1(); c3.m1(); c3.m2(); } }
Сколько ошибок выдаст компилятор и в каких страках?
Nado bylo hot stroki pronumerovat
m1() in C1 is not visible in C2, because overriden.
OBender
Уже с Приветом
Posts: 1564 Joined: 27 Nov 2001 10:01
Location: Live free or die
Post
by OBender » 05 Dec 2003 22:33
hooch wrote: C1 c = new C1(); - constructor is not visible, make C1() constructor public.
Ага, или поместить все слассы в один пакадж
Интересный вы человек! Все у вас в порядке. Удивительно, с таким счастьем - и на свободе. (C) О.Бендер
igrok
Уже с Приветом
Posts: 291 Joined: 25 Sep 2001 09:01
Post
by igrok » 05 Dec 2003 22:51
OBender wrote: hooch wrote: C1 c = new C1(); - constructor is not visible, make C1() constructor public.
Ага, или поместить все слассы в один пакадж
Или добавить {} к инициализации переменной: C1 c = new C1(){};
igrok
Уже с Приветом
Posts: 291 Joined: 25 Sep 2001 09:01
Post
by igrok » 05 Dec 2003 22:53
hooch wrote: Nado bylo hot stroki pronumerovat
Пронумеровал