![]() |
|
|
|||||||
| Java Basics - Anfänger-Themen Fragen ausschließlich zu Java-Grundlagen von Ein- und Umsteigern |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 08.06.2006
Beiträge: 223
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Hallo,
ich würde gerne wissen, warum Inteface Methoden implizit als "public" definiert sind. Ich habe zb in meinem Programm Objekte, die man an etwas anhängen kann. Das sind aber ganz unterschiedliche Objekte. Ich definiere daher das Interface "Appendable" mit beispielsweise der Methode "getAppendableInfomation()". das ist für mich der Sinn von Interfaces. ich verstehe aber nicht, warum die Methode "getAppendableInformation()" public sein MUSS. kann ja auch sein, dass ich sie nur in diesem einem package benoetige. Ein großes Problem ist das natürlich nicht, aber ich würde gerne wissen, was der Sinn dahinter ist. Wollen mir die JavaEnwickler damit sagen, dass Interfaces, die nur lokal benutzt werden, keinen Sinn machen?? danke! |
|
|
| #3 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 11.05.2004
Beiträge: 6.519
Blog-Einträge: 3
Abgegebene Danke: 0
Erhielt 4 Danke für 4 Beiträge
|
Naja, ich finde das "friend" von C++ manchmal um weiten besser als java
![]() Was ist wenn ich eben alles verbieten, aber für die eine Klasse nicht..
__________________
Wir machen Fehler aus Versehen, die anderen aus Dummheit. (Gabriel Laub) Pur Java Registry Reader - http://sourceforge.net/projects/java-registry/ |
|
|
| #4 (permalink) | ||||||||||||||||
|
Java-Forum Team
Moderator
Registriert seit: 07.02.2004
Beiträge: 7.644
Abgegebene Danke: 0
Erhielt 13 Danke für 10 Beiträge
|
Ich habe ein bisschen rumgesucht, im Sun-Forum fand ich z.B. das hier:
Eine offizielle Erklärung habe ich aber auch nicht gefunden.
|
|||||||||||||||
|
|
||||||||||||||||
| #5 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 11.05.2004
Beiträge: 6.519
Blog-Einträge: 3
Abgegebene Danke: 0
Erhielt 4 Danke für 4 Beiträge
|
Hier gibts viel zum Lesen
![]() http://java.sun.com/docs/books/jls/s...faces.doc.html Aber es steht halt immer nur sowas: All members of interfaces are implicitly public. Hahaha!!! Wenn man es so schreibt: Code:
interface Interface1
{
public void bla()
}
(wenn man protected oder private schreibt mekkert er)Wenn man aber public interface schreibt und bei der Methode einfach den public Namen weglässt, macht er es trotzdem public!
__________________
Wir machen Fehler aus Versehen, die anderen aus Dummheit. (Gabriel Laub) Pur Java Registry Reader - http://sourceforge.net/projects/java-registry/ |
|
|
| #6 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 02.01.2004
Beiträge: 1.495
Abgegebene Danke: 1
Erhielt 16 Danke für 16 Beiträge
|
Yo, aber bei jeder implementierenden Klasse sind die Methoden dann wieder öffentlich zugänglich...
mpG Tobias
__________________
Freies Mitglied der Volksfront von Judäa |
|
|
| #7 (permalink) | |
|
Stammbenutzer
Halbes Gigabyte
Registriert seit: 02.12.2003
Beiträge: 5.474
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
|
Indirekte Antwort:
In Smalltalk ist alles public und damit kann man auch professionell coden (siehe: http://www.cadence.com/ ). Stellt euich also nicht so mimosenhaft an! ![]() In der Tat ist es aber schwierig hier per Suchmaschine etwas zu finden, weil die passenden Suchbegriffe millionenfach im Netz zu finden sind, aber eben nicht in solch einer edlen Diskussion. Vielleicht sollte man sich das mal erbloggen, oder direkt mal einen von Sun nerven. Ich kenne aber nur die Köpfe vom Swing-Team
__________________
Andy Clarke is hip and mature. You almost never get both. He is a seasoned brand steward, a fancy pixel wrangler, and no mean hand at code. A triple talent. The bastard. - Jeffrey Zeldman http://www.alexander-langer.de |
|
|
| #8 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 11.05.2004
Beiträge: 6.519
Blog-Einträge: 3
Abgegebene Danke: 0
Erhielt 4 Danke für 4 Beiträge
|
Dann Frag die Köpfe vom Swing Team, sie sollen dir die Mail addys von den Konzepttypen schicken
![]() Und wenn du es so schreibst Code:
class InterfaceImpl implements Interface .. Und somit nicht auf die public Methoden... Ist zwar net der richtig gewünschte Effekt, aber tjo...
__________________
Wir machen Fehler aus Versehen, die anderen aus Dummheit. (Gabriel Laub) Pur Java Registry Reader - http://sourceforge.net/projects/java-registry/ |
|
|
| #9 (permalink) | ||||||||||||||||
|
Stammbenutzer
Halbes Gigabyte
Registriert seit: 06.02.2006
Beiträge: 6.269
Abgegebene Danke: 0
Erhielt 2 Danke für 2 Beiträge
|
meiner Meinung nach, verhindert hat, daß Smalltalk der Durchbruch im produktiven Bereich nicht gelungen ist.
__________________
|
|||||||||||||||
|
|
||||||||||||||||
| #10 (permalink) | ||||||||||||||||
|
Stammbenutzer
Halbes Gigabyte
Registriert seit: 02.12.2003
Beiträge: 5.474
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
|
http://www.spiegel.de/kultur/zwiebel...394969,00.html
__________________
Andy Clarke is hip and mature. You almost never get both. He is a seasoned brand steward, a fancy pixel wrangler, and no mean hand at code. A triple talent. The bastard. - Jeffrey Zeldman http://www.alexander-langer.de |
|||||||||||||||
|
|
||||||||||||||||
| #11 (permalink) | |
|
Stammbenutzer
Halbes Gigabyte
Registriert seit: 06.02.2006
Beiträge: 6.269
Abgegebene Danke: 0
Erhielt 2 Danke für 2 Beiträge
|
Mist!!!! :x
Das ausgerechnet du mich erwischen könntest, hätte mir vorher klar sein müssen. (Ich geh' jetzt freiwillig in die Ecke und schäme mich. )
__________________
|
|
|
| #12 (permalink) | |
|
Stammbenutzer
Halbes Gigabyte
Registriert seit: 02.12.2003
Beiträge: 5.474
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
|
Ja, der Teufel ist ein Eichhörnchen...
Ich warte noch auf Reaktionen aus der Blogosphäre auf meine entsprechenden BLog-Einträge. Nötigenfalls würde ich noch einen Hilferuf an die Java-Coder in Second Life schicken. Wenn das alles nichts bringt, sähe ich mich genötigt Meister ihres Faches zu quälen. Aber vermutlich gibt es eine ganz plausible Erklärung, nur sind wir unwürdig sie zu verstehen... P.S.: Ich habe einen buschigen Schwanz...
__________________
Andy Clarke is hip and mature. You almost never get both. He is a seasoned brand steward, a fancy pixel wrangler, and no mean hand at code. A triple talent. The bastard. - Jeffrey Zeldman http://www.alexander-langer.de |
|
|
| #13 (permalink) | ||||||||||||||||||||||||||||||||||||||||||||||
|
Stammbenutzer
Viertel Gigabyte
Registriert seit: 25.12.2009
Beiträge: 3.282
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Inbesondere ein Anwendungsbeispiel von private und eins wo es Sinn macht den Aufruf einer Interface-Methode auf die Unterklassen zu beschränken würden mich interessieren ![]()
Im Second Life hinten oder im First Life vorne?
__________________
java macht schöner und erhöht die lebenserwartung
|
|||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| #14 (permalink) | |
|
Benutzer
Byte
Registriert seit: 08.02.2007
Beiträge: 44
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Für mich liegt der Sinn in einem Interface darin, daß es die Schnittstellen einer Klasse nach außen definiert. Und da macht es doch wenig Sinn, diese Schnittstellen als private zu definieren?!
Es ist doch z.B. so gedacht: Code:
public Interface IDBZugriff(){
public connection connect(....);
}
public class DatenbankanwendungMySQL implements IDBZugriff{
public connection connect(){
......
......
......
}
}
public class DatenbankanwendungDB2 implements IDBZugriff{
public connection connect(){
......
......
......
}
}
public class Run(){
// und nun entweder oder:
IDBZugriff dao = new DatenbankanwendungDB2();
IDBZugriff dao = new DatenbankanwendungMySQL();
//die beiden einzigen Zeilen, die sich im Hauptprogramm ändern
dao.connect();
}
.Gruß, Aske |
|
|
| #15 (permalink) | ||||||||||||||||
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 08.06.2006
Beiträge: 223
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
also dass man nur sehr selten einige methoden eines interface gesondert beschränken will, kann ich nachvollziehen. eventuell wäre es dann ohnehin besser, wenn man zwei verschiedene interfaces macht, oder? aber wenn ich in meinem Beispiel oben getAppendableInformation() nur package-intern benötige, die das Interface implementierende Klasse aber public sein muss, dann sieht man diese Interface-Methoden auch außerhalb. Man hat zwar keinen Zugriff auf das Interface, wenn dieses default visibility hat, aber sehr wohl auf die das Interface implementierenden Methoden der Klasse, da letzere public sein muss und die Methode eben nicht niedriger als public gesetzt werden kann. |
|||||||||||||||
|
|
||||||||||||||||
| #16 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 10.11.2004
Beiträge: 18.262
Abgegebene Danke: 0
Erhielt 128 Danke für 126 Beiträge
|
Was ist denn das für ein Blödsinn?
In einem Interface ist alles public (was ja auch Sinn eines Interfaces ist, da es die Schnittstelle nach aussen darstellt). Lässt man den access modifier weg, sind die Methoden weiterhin public, da das lediglich eine Abkürzung für Schreibfaule ist.
__________________
Take back the Desktop |
|
|
| #17 (permalink) | ||||||||||||||||
|
Stammbenutzer
Viertel Gigabyte
Registriert seit: 25.12.2009
Beiträge: 3.282
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
@Aske: mein reden
__________________
java macht schöner und erhöht die lebenserwartung
|
|||||||||||||||
|
|
||||||||||||||||
| #18 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 11.05.2004
Beiträge: 6.519
Blog-Einträge: 3
Abgegebene Danke: 0
Erhielt 4 Danke für 4 Beiträge
|
Genau, wenn man ein Interface ohne irgendwas schreibt, dann kann es von außerhalb net angesprochen werden!
Also so: interface bla{..} Die Methoden sind aber public ^^ Außerdem hatte ich nie von private Methoden geredet, mir würden schon protected Mehtoden auch reichen!
__________________
Wir machen Fehler aus Versehen, die anderen aus Dummheit. (Gabriel Laub) Pur Java Registry Reader - http://sourceforge.net/projects/java-registry/ |
|
|
| #19 (permalink) | |
|
Stammbenutzer
Megabyte
Registriert seit: 11.09.2005
Beiträge: 1.059
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
hm... die protected Methoden gehören aber nu mal zu einer Vererbungshierachie und Interfaces sind ja gerade davon entkoppelt... - das einzige was also evtl. Sinn machen könnte, wäre package-private... aber das ist imho sowieso ne blöde Sichtbarkeit
- die kann man auch gleich weglassen *g*
__________________
"The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence." Edsger W. Dijkstra |
|
|
|
| Lesezeichen |
Latex Maths & Physics Editor ...
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| (Anfängerproblem) Problem mit dem Aufruf von public-Methoden | Java Basics - Anfänger-Themen | 3 | 15.04.2008 10:58 | |
| Methoden in abstrakter Klasse: public oder protected? | Ocean-Driver | Allgemeine Java-Themen | 16 | 19.02.2008 11:20 |
| Warum sind sie so unterschiedlich? | enriico | Allgemeine Java-Themen | 1 | 27.11.2006 14:22 |
| public Methoden in Interfaces | Malcolm X | Java Basics - Anfänger-Themen | 5 | 24.12.2005 12:07 |
| Was sind Klassen, Objekte und Methoden? | Java Basics - Anfänger-Themen | 3 | 12.12.2004 17:43 | |