在OO编程中'Interface'的工作是什么?

时间:2014-02-13 11:37:16

标签: oop interface concept

据我了解,这是什么意思。制定方法来构建程序的不同组件。例如如果我要制作一个添加和减去数字的程序,那么我会有类似的东西;

        public void addnum(int addnum){
        addnum= addnum+1;
        system.out.println(addnum);
    }

        public void subtractnum int subtractnum){
        subtractnum = subtractnum-1;
        system.out.println(addnum);
    }
        public static void main(String args[]){
        int num = 21;
        addnum(num);
        subtractnum(num);

    }

我是否正确,或者是否意味着其他事情?

3 个答案:

答案 0 :(得分:1)

将不同的方法与不同的参数类型混淆 也许这个例子会有所帮助:

public interface GeometricalObject {
    double getArea();
    double getPerimeter();
}

...

public class Circle implements GeometricalObject {
    public double r;

    public double getArea() {
        return 3.14 * r * r;
    }
    public double getPerimeter()
    {
        return 3.14 * 2 * r;
    }
}

...

public class Square implements GeometricalObject {
    public double s;

    public double getArea() {
        return s * s;
    }
    public double getPerimeter()
    {
        return 4 * s;
    }
}

...

public void printGeomObject(GeometricalObject g) {
    System.out.println("Area is " + g.getArea());
    System.out.println("Perimeter is " + g.getPerimeter());
}

答案 1 :(得分:1)

接口为我们提供了多级继承的方式。

接口可以扩展到任何类

任何类的公共属性都可以在接口中定义,并且可以继承到许多类。

答案 2 :(得分:1)

在Java和.NET框架中,从Y继承的类X有两个好处:

  1. 类X的实例封装了所有Y字段的值,并且可以使用Y的任何受保护成员,就像这些成员属于X一样;另外,X类的定义可能使用Y的静态成员,就像它们自己的一样。

  2. Y类型的变量可以保存对类型X实例的引用。

  3. 允许类对象将其他多个类的内容视为自己的内容,这使得无法使upcast和downcast保持身份;由于保持身份保持向上转发和向下转换是有用的,因此Java和.NET允许每个类仅将一个父级的成员视为其自己的父级(父级的父级成员也是父级的成员,并且如此合并)。仅从一个父类中加入成员的限制通常不会过于严格。

    另一方面,如果每种类型只能存储在其自身类型或其祖先类型的引用中,那么这将是限制性的。为了允许以多种独立类型存储对象的引用可能是有帮助的,Java和.NET都可以定义接口类型。对实现接口的对象的引用可以存储在该接口类型的变量中(实现继承的第二个好处),但与限于单个父类的类继承不同,接口实现相对不受限制。一个类可以实现任意数量的独立接口,并且对这样一个类的引用可以存储在任何这些接口类型的变量中。

    简而言之,接口提供了继承的最重要的好处(引用可替代性),但放弃了一些功能以换取放弃一个重要的限制(无法从多个类继承)。