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中接口不能被实例化的