第28节 Java接口与多态(上)(interface、implements)

#第28节 Java接口与多态(上)(interface、implements)

##接口与多态
接口是抽象的最高境界

Java除了平台无关的特点外,从语言的角度来看,Java的接口是该语言的又一特色。Java舍弃了C++语言中多重继承的机制,使得编写的代码更加健壮和便于维护,因为多继承不符合人的思维模式,就像生活中,人只有一个父亲,而不是多个。尽管多继承可以使编程者更加灵活的设计程序,但是程序会显得难于阅读和维护。

Java不支持多继承性,即一个类只能有一个父亲。通过继承方式只能得到一个多态。单继承性使得Java简单,易于管理和维护。那么为了克服Java单继承的缺点,Java使用了接口,一个类可以实现多个接口,Java的接口更加符合人的思维方式。

##接口声明和使用
使用关键字interface来定义一个接口。
接口的定义和类的定义很相似,分为接口的声明和接口体。

##1)接口声明

接口通过使用关键字interface来声明,格式:
interface 接口的名字

###示例:
test.java

public interface Test {     //声明了一个接口
}

##2)接口体
接口体中包含常量的声明(没有变量)和方法定义两个部分。接口体中只有抽象方法,没有普通方法,而且接口体中所有的常量的访问权限一定都是public(允许省略public、final修饰符),所有的抽象方法的访问权限一定都是public(允许省略public、abstract修饰符),例如:

interface Test{
   public final int MAX = 100; // 等价写法:int MAX = 100;
   public abstract void add(); // 等价写法:void add();
   public abstract float getSum(float x,float y);
}

示例:
test.java

public interface Test {
	int MAX= 100;   //常量
	int getSum(int x);    //抽象方法
}

##3)接口的使用
类通过使用关键字implements声明自己实现一个或多个接口,如果实现多个接口,则用逗号隔开接口名.

class A implements Printable,Addable
class Dog extends Animal implements Eatable,Sleepable

如果一个类实现了某个接口,那么这个类必须重写该接口的所有方法

示例:
创建类Tom Bob实现test这个接口
Tom.java

public class Tom implements Test {
	@Override
	public int getSum(int x) {    //重写了getSum这个方法
		int sum = 0;
		for (int i = 1; i <= x; i++) {
			sum = sum + i;
		}
		return sum;
	}
}

Bob.java

public class Bob implements Test {
	@Override
	public int getSum(int x) {   //重写了getSum这个方法
		return 12 + x;
	}
}

以上两个类实现了这个接口,但他们实现的方式却不同
在主类中如何来运用它呢?
Demo26.java

public class Demo26 {
	public static void main(String[] args) {
		Tom tom = new Tom();
		Bob bob = new Bob();
		System.out.println("tom的计算结果:"+tom.getSum(20));
		System.out.println("bob的计算结果:"+bob.getSum(20));
	}
}

运行结果 这是最简单的声明了两个接口,然后用两个类来实现这个接口
在这里插入图片描述

##4)理解接口

1.接口可以增加很多类都需要具有的功能,不同的类可以实现相同的接口,同一个类也可以实现多个接口。
2.接口只关心操作,并不关心操作的具体实现
3.接口的思想在于它可以增加很多类都需要具有的功能,而且实现相同的接口类不一定有继承关系。

猜你喜欢

转载自blog.csdn.net/bravery2288/article/details/82866214
今日推荐