Java面向对象-接口
接口定义:一种特殊的“抽象类”,没有普通方法,由全局常量和公共的抽象方法所组成;
1,接口的定义
接口定义用关键字 interface
我们给下实例代码:
1 package com.java1234.chap03.sec12; 2 3 /** 4 * 定义一个接口A 5 * @author user 6 * 7 */ 8 public interface A { 9 10 /** 11 * 全局常量 12 */ 13 public static final String TITLE="hello"; 14 15 /** 16 * 定义一个抽象方法 abstract可以省略 17 */ 18 public abstract void a(); 19 }
注意点:由于接口里的方法都是抽象的,所以abstract可以省略,实际开发一般都是省略的,开发者的习惯;
2,实现接口 可以实现一个或者多个接口
实现接口我们用implements关键字,我们来搞一个测试方法:
1 package com.java1234.chap03.sec12; 2 3 public class Test implements A{ 4 5 @Override 6 public void a() { 7 System.out.println("a方法"); 8 } 9 10 public static void main(String[] args) { 11 Test t=new Test(); 12 t.a(); 13 System.out.println(Test.TITLE); 14 } 15 }
实现接口 ,类里要实现接口里的抽象方法;
运行输出:
a方法
hello
为了演示实现多个接口,我们这里再定义一个接口:
1 package com.java1234.chap03.sec12; 2 3 /** 4 * 定义一个接口B 5 * @author user 6 * 7 */ 8 public interface B { 9 10 /** 11 * 全局常量 12 */ 13 public static final String TITLE2="java知识分享网"; 14 15 /** 16 * 定义一个抽象方法 abstract可以省略 17 */ 18 public abstract void b(); 19 }
我们修改下Test类:
1 package com.java1234.chap03.sec12; 2 3 public class Test implements A,B{ 4 5 @Override 6 public void a() { 7 System.out.println("a方法"); 8 } 9 10 @Override 11 public void b() { 12 System.out.println("b方法"); 13 } 14 15 public static void main(String[] args) { 16 Test t=new Test(); 17 t.a(); 18 t.b(); 19 System.out.println(Test.TITLE); 20 System.out.println(Test.TITLE2); 21 } 22 23 24 }
实现多个接口,中间用逗号隔开,并且实现所有抽象方法:
运行输出:
a方法
b方法
hello
java知识分享网
3,继承类和实现接口 先继承,后实现接口
我们先定义一个类C:
1 package com.java1234.chap03.sec12; 2 3 public class C { 4 5 public void c(){ 6 System.out.println("c方法"); 7 } 8 }
我们再修改下测试类Test 继承C类,实现A,B接口,这里有个注意点,java规范,必须先继承后实现接口;
我们上下代码:
1 package com.java1234.chap03.sec12; 2 3 public class Test extends C implements A,B{ 4 5 @Override 6 public void a() { 7 System.out.println("a方法"); 8 } 9 10 @Override 11 public void b() { 12 System.out.println("b方法"); 13 } 14 15 public static void main(String[] args) { 16 Test t=new Test(); 17 t.a(); 18 t.b(); 19 t.c(); 20 System.out.println(Test.TITLE); 21 System.out.println(Test.TITLE2); 22 } 23 24 25 }
运行输出:
a方法
b方法
c方法
hello
java知识分享网
4,接口的继承 接口可以多继承
我们定义一个D接口 继承A,B接口:
1 package com.java1234.chap03.sec12; 2 3 public interface D extends A,B{ 4 5 public void d(); 6 }
这里再加一个d方法;
我们重新搞一个测试方法 继承C类,实现D接口:
1 package com.java1234.chap03.sec12; 2 3 public class Test2 extends C implements D{ 4 5 @Override 6 public void a() { 7 System.out.println("a方法"); 8 } 9 10 @Override 11 public void b() { 12 System.out.println("b方法"); 13 } 14 15 @Override 16 public void d() { 17 System.out.println("d方法"); 18 } 19 20 public static void main(String[] args) { 21 Test2 t=new Test2(); 22 t.a(); 23 t.b(); 24 t.c(); 25 t.d(); 26 System.out.println(Test2.TITLE); 27 System.out.println(Test2.TITLE2); 28 } 29 }
运行输出:
a方法
b方法
c方法
d方法
hello
java知识分享网
注:
Java中接口不能被实例化的
本文来自博客园,作者:大码王,转载请注明原文链接:https://www.cnblogs.com/huanghanyu/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具