接口

>>>>>>>>>>>>>>>>>>>>

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);

        
        
    }
    
}
 
原文地址:https://www.cnblogs.com/xuehx/p/6144458.html