Java面向对象——接口(interface)

1.接口定义:一种特殊的“抽象类”,没有普通方法,由全局常量和公共的抽象方法所组成;

接口定义用关键字interface

先定义一个A接口:

package m10d29;

// 定义一个接口

public interface A {

	//定义一个全局变量
	public static final String name="java";
	
	//定义一个抽象方法,abstract可以省略,具体功能实现交给子类;
	public abstract void a();
	
}

注意:由于接口里的方法都是抽象的,所以abstract可以省略;

2,实现接口 可以实现一个或者多个接口

实现接口我们用implements关键字

package m10d29;

public class Test1 implements A{

	@Override
	public void a() {
		System.out.println("a方法");
		
	}

	public static void main(String[] args) {
		Test1 t=new Test1();
		t.a();//调用a方法
		System.out.println(Test1.name);
	}
	
}

结果:

a方法
java

implements也可以实现多个接口(用逗号隔开):

再定义一个B接口:

package m10d29;

public interface B {

	public static final String name1="html";
	
	//abstract可以省略
	public void b();
}

在测试类中:

package m10d29;

public class Test1 implements A,B{

	@Override
	public void a() {
		System.out.println("a方法");
		
	}

	@Override
	public void b() {
		System.out.println("b方法");
		
	}
	
	public static void main(String[] args) {
		Test1 t=new Test1();
		t.a();//调用a方法
		t.b();//调用b方法
		System.out.println(Test1.name);
		System.out.println(Test1.name1);
	}
	
}

输出结果:

a方法
b方法
java
html

3,继承类和实现接口 先继承,后实现接口

我们定义一个C类:

package m10d29;

public class C {

	public void c(){
		System.out.println("c方法");
	}
}

在测试类Test中继承C类并且实现A和B两个接口的功能:

继承类的关键字extends要写在实现接口关键字implements的前面 

package m10d29;

public class Test1 extends C implements A,B{

	@Override
	public void a() {
		System.out.println("a方法");
		
	}

	@Override
	public void b() {
		System.out.println("b方法");
		
	}
	
	public static void main(String[] args) {
		Test1 t=new Test1();
		t.a();//调用a方法
		t.b();//调用b方法
		t.c();//调用c方法
		System.out.println(Test1.name);
		System.out.println(Test1.name1);
	}
	
}

输出结果:

a方法
b方法
c方法
java
html

 4.接口可以实现多继承

比如再建一个D接口,分别继承A接口和B接口:

package m10d29;

public interface D extends A,B{

	public void d();
}

在测试类Test中,将实现接口A和B改为D,并且调用d方法:

package m10d29;

public class Test2 extends C implements D{

	@Override
	public void a() {
		System.out.println("a方法");
		
	}

	@Override
	public void b() {
		System.out.println("b方法");
		
	}
	
	@Override
	public void d() {
		System.out.println("d方法");
		
	}
	
	public static void main(String[] args) {
		Test2 t=new Test2();
		t.a();//调用a方法
		t.b();//调用b方法
		t.c();//调用c方法
		t.d();//调用d方法
		System.out.println(Test2.name);
		System.out.println(Test2.name1);
	}

	
	
}

输出结果为:

a方法
b方法
c方法
d方法
java
html

猜你喜欢

转载自blog.csdn.net/qq_37084904/article/details/83511854