Für DAO-Klassen sollten Sie eine Schnittstelle mit Dao-Methoden deklarieren (die natürlich öffentlich sein wird). Ihre DAO-Klassen sollten die Schnittstelle erweitern. Auf diese Weise werden Ihre Dao-Methoden von anderen Klassen über die Schnittstellenreferenz aufgerufen.
Es ist der bessere Weg, weil es einfach zu testen ist. Sie können eine Scheinimplementierung der DAO-Schnittstelle bereitstellen, um Ihren Code zu testen. Sie können dies tun, bevor Sie Ihre eigentliche DAO-Klasse schreiben. Wenn Sie DAO-Methoden mit einer Schnittstellenreferenzvariable aufrufen, können Sie Ihre DAO-Klasse ändern, und sie funktioniert weiterhin, weil Sie die Klasse und nicht die Schnittstelle ändern, deren Referenz Sie zum Aufrufen der Methoden verwenden (umbenennen des Klassennamens für ein Beispiel).
Es ist das wichtige Designprinzip, dass Sie immer wo immer möglich eine Schnittstelle codieren sollten. Ich empfehle Ihnen, this answer zu lesen, warum Sie für Schnittstellen in DAO codieren sollten.
Sie sollten den geschützten Modifikator im Falle einer Vererbung verwenden. Wenn Sie außerhalb des Pakets möchten, sollten nur untergeordnete Klassen auf die Methoden und Eigenschaften Ihrer Klasse zugreifen können. wenn Sie etwas tun müssen, das nicht in der öffentlichen API verfügbar gemacht werden soll, aber dennoch von Unterklassen überschrieben werden muss, zum Beispiel template method pattern.
Ich ermutige Sie, die Zugriffsmodifikatoren zu überprüfen und wann sie zu verwenden https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html, wie mit anderen normalen Objekt die Methoden in einem Dao-Klasse sollten Seien Sie öffentlich, wenn sie von anderen Objekten aufgerufen werden, Sie können so viele wie Sie wollen und wenn Sie nicht einige von ihnen dann ungeschützt oder privat machen wollen, ist es normal – karelss