接口

接口是抽象类功能的另一种实现方法,也就是一种“纯”的抽象类。在接口中所有的方法都是抽象方法,都没有方法体。java中允许一个类实现多个接口。
接口与一般类一样,本身具有数据成员与方法,但数据成员一定要赋初值,且此值不能再更改,即系统会将其自动增加final和static关键字。而方法必须是“抽象方法”。
举个栗子:

public interface Insurable {
    public int getPolicyNumber();
    public int getCoverageNumber();
    public double calculatePremium();
    public Date getExpiryDate();
}
public class Car implements Insurable{
    @Override
    public int getPolicyNumber() {
        return 0;
    }

    @Override
    public int getCoverageNumber() {
        return 0;
    }

    @Override
    public double calculatePremium() {
        return 0;
    }

    @Override
    public Date getExpiryDate() {
        return null;
    }
}

另外,实现一个接口的类也必须实现此接口的父接口,例如:

public interface DepreciatingInsurable extends Insurable {
    public double computeFairMarketValue();
}
public class Car implements DepreciatingInsurable{
    @Override
    public double computeFairMarketValue() {
        return 0;
    }

    @Override
    public int getPolicyNumber() {
        return 0;
    }

    @Override
    public int getCoverageNumber() {
        return 0;
    }

    @Override
    public double calculatePremium() {
        return 0;
    }

    @Override
    public Date getExpiryDate() {
        return null;
    }
}

在接口的定义中,java允许省略定义数据成员的final关键字,方法的public及abstract关键字。
继续看示例:

interface Shape2D {
    double pi = 3.14;
    double area();
}
public class Circle implements Shape2D {
    double radius;
    public Circle(double r){
        radius = r;
    }
    @Override
    public double area() {
        return pi * radius * radius;
    }
}
public class Rectangle implements Shape2D {
    int width,height;
    public Rectangle(int w,int h){
        width = w;
        height = h;
    }
    @Override
    public double area() {
        return (width * height);
    }
}
public class MyClass {
    public static void main(String[] args){
        Rectangle rect = new Rectangle(5,6);
        System.out.println("Area of rect = "+rect.area());
        Circle cir = new Circle(2.0);
        System.out.println("Area of cir = "+cir.area());
    }
}

这里写图片描述

我们不能直接用接口来创建对象,必须通过由接口实现接口的类来创建。

public class MyClass {
    public static void main(String[] args){
        Shape2D var1,var2;
        var1 = new Rectangle(5,6);
        var2 = new Circle(2.0);
        System.out.println("Area of rect = "+var1.area());
        System.out.println("Area of cir = "+var2.area());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值