[Java的] 使用接口
有提出了许多问题,如用户界面来完成, 为什么使用的界面, 如何使用界面,… 在本文中,我希望能够回答多少有些理解的,可能的,因为它通常是比较抽象=)) 而且说在下面写的是什么,是我有限的了解一部分, 如果你能补充的东西真的非常适合我,以及你阅读追踪.
1. 使用接口的联合行动,创建对象
例如,总是离线. 想象一下,你每天学习到很多学科, 数学, LY, 化学, 天生, 英语, 面包车, 历史,… 每个科目一本书或玩, 所以真的很不方便,当你 “组成” 上课. 现在,我向你不需要知道今天的方式是什么研究了其目标来上课, 即使用通用的,可以容纳所有的科目. 本身是由在所有科目取得这样 1 多功能笔记本电脑, 学校才刚刚把它捡起掉完成=)).
在编程的书, (登记) 通用的接口,你. 现在就开始试用离线. 你数学, LY, 化学, 天生,.. 像我刚才提到的, 每个模块是一类. 你有书的阵列,需要把它带到学校,我们尝试看看我们如何正常?
package cachhoc.net.useinterface.method; class Toan { public void mangSachToiTruong() { System.out.println("Sach Toan duoc mang toi truong"); } } class Ly { public void mangSachToiTruong() { System.out.println("Sach Ly nhe"); } } class Hoa { public void mangSachToiTruong() { System.out.println("Sach Hoa ok"); } } class Sinh { public void mangSachToiTruong() { System.out.println("Sach Sinh day roi"); } } public class TruongHoc { public static void main(String[] args) { Object[] sach = { new Toan(), new Ly(), new Hoa(), new Sinh() }; for (Object s : sach) { s.mangSachToiTruong(); // loi roi nhe } } }
你去试试代码, 你将看到的是创建数组国家文物局,我们把它的对象数组并调用该方法没有其他办法mangSachToiTruong() 将不可能.
现在的界面将帮助我们解决这个问题. 首先,我们创建一个接口 书籍 有方法 mangSachToiTruong();
package cachhoc.net.useinterface.method; public interface Sach { public void mangSachToiTruong(); }
然后我们创建类全胜, 玻璃, 花, 出生实施和执行萨克mangSachToiTruong方法和问题如下得到解决.
package cachhoc.net.useinterface.method; class Toan implements Sach { @Override public void mangSachToiTruong() { System.out.println("Sach Toan duoc mang toi truong"); } } class Ly implements Sach { @Override public void mangSachToiTruong() { System.out.println("Sach Ly nhe"); } } class Hoa implements Sach { @Override public void mangSachToiTruong() { System.out.println("Sach Hoa ok"); } } class Sinh implements Sach { @Override public void mangSachToiTruong() { System.out.println("Sach Sinh day roi"); } } public class TruongHoc { public static void main(String[] args) { Sach[] sach = { new Toan(), new Ly(), new Hoa(), new Sinh() }; for (Sach s : sach) { s.mangSachToiTruong(); } } }
2. 数据传输, 类之间的消息
这就是常说的类数据交换, 通过接口消息. 在本节中,我们将学习它. 这个问题会更清楚,如果我们做的接口, 即使用JFrame. 但是,如果你不没有星星,界面不错.
你有 2 类是GiaoDien和下载. GiaoDien类有一个按钮, 点击下载方法调用类下载下载文件, 和下载过程中, 类下载回去上课GiaoDien知道有多少是下载. 你看 2 自己的以下方法.
如何 1 (怎么老玉米或用警棍): 通信对象的类接口的更新下载的下载百分比.
package cachhoc.net.useinterface.senddata; public class GiaoDien { private Download download; /** * phuong thuc khoi tao Giao dien, dong thoi khoi tao doi tuong download va * truyen chinh giao dien sang class Download de cap nhat giao dien */ public GiaoDien() { download = new Download(this); } private void nhanDownload() { download.download(); } public void capNhatGiaoDien(int phanTramDownload) { System.out.println("class giao dien cap nhat duoc: " + phanTramDownload + "%"); } public static void main(String[] args) { GiaoDien giaoDien = new GiaoDien(); giaoDien.nhanDownload(); } }
package cachhoc.net.useinterface.senddata; public class Download { private GiaoDien giaoDien; /** * @param giaoDien * de cap nhat giao dien */ public Download(GiaoDien giaoDien) { this.giaoDien = giaoDien; } public void download() { for (int i = 0; i < 100; i++) { System.out.println("Dang download..."); giaoDien.capNhatGiaoDien(i); } System.out.println("Ket thuc download"); } }
正如你所看到的,更新的界面,简单的证明,我们刚刚通过的接口类对象完成下载.
然而,当对象被传递给giaoDien发生许多问题, 下载类被允许调用类,其中,没有必要GiaoDien的方法, 需要更新的接口方法,允许类的调用下载它可以被称为是一个人在这里向公众而不是私人. 或者,假设我们有一流的经历在课堂中间的某一类X的方法下载下载新的电话,所以我们要转移到X GiaoDien, X再传输到下载, 如此复杂… 和许多其他的限制,将真正让你更好的理解.
如何 2: 使用界面
我们创建一个名为接口CapNhat包含的方法capNhatGiaoDien(); GiaoDien然后实现以下CapNhat:
package cachhoc.net.useinterface.senddata; public interface CapNhat { public void capNhatGiaoDien(int giaTri); }
package cachhoc.net.useinterface.senddata; public class Download { private CapNhat capNhat; /** * @param capNhat * lang nghe su kien download */ public void addDownloadListener(CapNhat capNhat) { this.capNhat = capNhat; } public void download() { for (int i = 0; i < 100; i++) { System.out.println("Dang download..."); /** * Khi goi capNhat.capNhatGiaoDien(i); thi phuong thuc nay se tu * dong duoc goi trong giao dien * */ capNhat.capNhatGiaoDien(i); } System.out.println("Ket thuc download"); } }
package cachhoc.net.useinterface.senddata; public class GiaoDien implements CapNhat { private Download download; /** * phuong thuc khoi tao Giao dien, dong thoi dat lang nghe su kien download */ public GiaoDien() { download = new Download(); /** dat lang nghe su kien download */ download.addDownloadListener(this); } private void nhanDownload() { download.download(); } /** * Tu dong duoc goi trong qua trinh download thong qua interface CapNhap */ @Override public void capNhatGiaoDien(int giaTri) { System.out.println("class giao dien cap nhat duoc: " + giaTri + "%"); } public static void main(String[] args) { GiaoDien giaoDien = new GiaoDien(); giaoDien.nhanDownload(); } }
你可以看到,道路 2 这克服了传统方法的弊端 1. 类并不需要下载电视机前的观众,仅仅一个接口GiaoDien CapNhat, 因此该方法, 非药物GiaoDien计算 “裸露” 或可被称为下载. 如果你通过某种类X,然后下载新的实现并不需要通过已更新下载过程中接口的对象GiaoDien中级班. 或者,假设有许多接口需要下载期间被更新,这是淡漠,如何 1 因为你需要通过所有类接口下载会比较困难…
以上是 2 他们用最显眼的接口应用. 我们希望它可以帮助你在这个过程中学习如何使用界面.
在本文来源 cachhoc.net
自然光不知道如何使用界面, 搜索该被丢弃无数帅哥区在线博客.
帖子相当或. 然而我的留言: “如果你能补充的东西真的非常适合我,以及你阅读追踪”, 我要发表评论 1 这个地方.
1. 使用接口的联合行动,创建对象: 行, 我可以在这里使用interace, 但可以使用更多的抽象类. 那么,为什么您使用的接口,而不是一个抽象类?
2. 数据传输, 类之间的消息: 优秀. 看起来有点像观察者模式, 我已经做了 1/3. 但他贡献了 2 为它是评价 3/3 = 1 完整的观察者模式.
2.1. 我对GiaoDien理念实现好当CapNhat, 下载类和类只用CapNhat工作. 但是,工人阶级直接与层下载GiaoDien? 为什么不能做下载相同, 下载将意味着器具 1 InterfaceX nào đó, và GiaoDien sẽ làm việc với InterfaceX. Lý do thì cũng tương tự như GiaoDien implements CapNhat.
2.2. Làm thế nào nếu muốn lớp Download notify cho nhiều hơn 1 đối tượng CapNhat? Thay vì dùng 1 đối tượng capNhat thì em có thể dùng 1 Collection chẳng hạn.
行, 这一切. 🙂
Dạ vâng, em cảm ơn những ý kiến đóng góp của anh Hoàng. Em sẽ bổ xung vào bài viết.
Còn về các câu hỏi của anh thì…
1. Em nghĩ abstract class hoàn toàn có thể làm được việc này, tuy nhiên thì do 1 class chỉ kế thừa được 1 class nên nếu A & B có hành động chung là Hab, B & C có hành động chung là Hbc, thế thì việc này sẽ khó… mà khi dùng interface sẽ ổn 😉
2.1 Em nghĩ cái anh đưa ra rất tốt và hay.
2.2 Dùng Collection trong trường hợp này là đúng là tiện nhất anh nhỉ 😉
Anh có thể viết lại 2 góp ý này được không ạ
cái interface phải đặt riêng 1 file khác à bạn? 向广大公众,他们的错误时.
一般的福祉是. 如果这个共同的问题一个简单的界面,否则设置除了为方便管理.
我需要我的所有教程关于面向对象,但我刚才看到 2 股份类别 , 对象和接口. 希望你能引导各稍作休整!
欢迎. 现在我写DL 2 它独自一人… 其他部分我还没来得及给你写啊.
他解释了为什么界面采取Ë抽象 100% 从抽象类 0-100% 是不是
因为只有接口功能抽象定义,它们也可以被部署内容
一个可以解释在后的主要功能循环的意思是不是mangSachToiTruong帮助Ë?
为 (国家文物局小号 : 国家文物局) {
s.mangSachToiTruong();
}
这是离线的foreach. 浏览列表国家文物局, 每个元素批准.
谢谢, 非常有用的文章!
我跟他打招呼!
部分 2: 类之间的数据传送, 如果他能更多地解释之间的差异 2 怎么不是? 现在我明白了 2 interfaceface方式与否,部分capnhat(giaoDien) 仍然可以使用相同的, 所以,不同的是无处先生?
谢谢!
然而,当对象被传递给giaoDien发生许多问题, 下载类被允许调用类,其中,没有必要GiaoDien的方法, 需要更新的接口方法,允许类的调用下载它可以被称为是一个人在这里向公众而不是私人. 或者,假设我们有一流的经历在课堂中间的某一类X的方法下载下载新的电话,所以我们要转移到X GiaoDien, X再传输到下载, 所以很复杂......和很多其他限制,当你做实际就明白了.
他TKS!
“然而,当对象被传递给giaoDien发生许多问题, 下载类被允许调用类,其中,没有必要GiaoDien的方法, 需要更新的接口方法,允许类的调用下载它可以被称为是一个人在这里向公众而不是私人. ” : 这个地方我已阅读并重读,仍然看不到之间的差异 2 从, 使用capnhat capnhat接口引用仍然可以调用giaodien以同样的方式方法时, 1, 仍然可以调用不必要的方法 :(.
在课堂上,你可以调用下载nhanDownload() ?. Nếu ở class GiaoDien có 1 biến public abc, bạn có gọi được trực tiếp biến abc đó ở class Download thông qua cái kia?
Xin lỗi đã làm phiền anh, em đã tìm ra chỗ sai của mình rồi! 谢谢!
🙂 ko co chi 🙂
ở cái vd thứ 2 công dụng của interface có phải là : cái đối tượng capnhat tại class dowload nó có khả năng tham chiếu tới bất kì đối tượng của lớp nào mà implment nó (就像对象capnhat代表所有的对象的类实现它 , 并在此之后,你想 1 某些类集体诉讼的下载中心,我只需要不仅实现了爵士capnhat ) , 而在接口方法声明中capnhat新的对象必须拨打咨询电话没有,先生 ??
可以这么说
Bài của anh hay quá,nếu có thể mong anh thêm nhiều ví dụ hơn về chủ đề này được không anh,
谢谢, mình sẽ cố gắng 🙂
Công dụng của interface còn gì nữa không anh? Mặc dù đã biết sơ qua về 2 công dụng trên nhưng xem 2 ví dụ của anh làm em thêm rõ hơn .Thank anh
Bạn có thể cho mình biết, khi nào dùng interface, khi nào dùng abstract
Nôn na là dùng abstract khi mà 1 类方法没有具体写出可以写出具体的方法和也. 接口使用时,所有的方法都没有具体的核销.
Cho em hỏi là làm như thế nào để cho một lớp kế thừa thông tin của 2 lớp khác nhau ạ? Em có tra và thấy bảo sử dụng interface ạ?
中小企业, trong java không có kế thừa 2 class bình thường. mà muốn kế thừa từ 2 trở lên thì dùng interface.