>>>>>>>>>>>>>>>>>>>>
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
接口实现和类继承的规则不同,为了数据的安全,继承时一个类只有一个直接父类,也就是单继承,但是一个类可以实现多个接口,接口弥补了类的不能多继承缺点,继承和接口的双重设计既保持了类的数据安全也变相实现了多继承。
Java接口的方法只能是抽象的和公开的,Java接口不能有构造器,Java接口可以有public、静态的和final属性。
在语法上,抽象类和接口有着以下不同:
1.abstract class在Java语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。 继承抽象类使用的是extends关键字,实现接口使用的是implements关键字,继承写在前面,实现接口写在后面。如果实现多个接口,中间用逗号分隔。
例: 1 public class Main extends JApplet implements ActionListener, Runnable
2.在abstract class中可以有自己的数据成员,也可以有非abstract的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。
4.实现接口的类必须实现其中的所有方法,继承自抽象类的子类实现所有的抽象方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
6.抽象类中的变量默认具有 friendly权限,其值可以在子类中重新定义,也可以重新赋值。
7.接口中的方法默认都是 public abstract 类型的。
代码实例:
package SecondWeekSixthDay; /*interface:接口*/ //创建一个Car,有两个行为,分别是获取汽车的名字和获取汽车的价格。 interface Car{ /*声明两个公共属性。共子类使用*/ //汽车名称 public String getName();//获取汽车的名字 //获得汽车价格 public int getPrince();//获取汽车的价格 /*属性只能用public修饰*/ /*属性只能用public修饰*/ /*属性只能用public修饰*/ /*重要的事说三遍*/ } //实现类:BMW 宝马车,实现类必须要“重写”接口Car的所有行为 /*implements:实现、装备*/ /*宝马类有一个car的接口*/ class BMW implements Car{ @Override/*重写:汽车名称*/ public String getName() { // TODO Auto-generated method stub return "我是BMW宝马车";/*返回值*/ } @Override/*重写:获得汽车价格*/ public int getPrince() { // TODO Auto-generated method stub return 300000;/*返回值*/ } } //实现:必须要重写接口Car的所有行为 class Cherry implements Car{ /*奇瑞Cherry类有一个接口Car*/ @Override public String getName() { // TODO Auto-generated method stub return "我是Cherry奇瑞车"; } @Override public int getPrince() { // TODO Auto-generated method stub return 20000; } } //汽车出售商 class CarShop {/*CarShop*/ private int money = 0;//卖出汽车的收入 /*申明一个int类型属性:sellCar-->销售汽车*/ public int sellCar(Car car){//卖车的行为方法,返回收入 int price = car.getPrince(); return money=money+price;} public int getmoney(){ return money;} } public class TestCarShop {/*类体*/ //计算卖车的收入 public static void main(String[] args) {/*main入口*/ CarShop carShop =new CarShop(); Car car1=new BMW(); carShop.sellCar(car1); Car car2=new Cherry(); carShop.sellCar(car2); int counMoney=carShop.getmoney(); System.out.println("汽车出售的价格是:"+counMoney); } }