2014-02-13 4 views
0

Насколько я понимаю, это значит. чтобы создать различные компоненты программы. например если бы я должен был сделать программу, которая добавляет и вычитает числа, тогда у меня будет что-то вроде;Что такое «интерфейс» в программировании OO?

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

    } 

Я прав, или это означает что-то еще?

+1

Не уверен, что вы имеете в виду, но интерфейс является договором между пользователями класса и разработчиком. Пользователь не требует каких-либо знаний о реализации, он должен знать свой интерфейс. См. Дополнительную информацию о интерфейсах: http://stackoverflow.com/search?q=what+is+an+interface –

+0

Привет, спасибо, что я искал. Кстати, есть ли какие-либо потоки с простыми примерами концепции программирования OO ?. – Seeker

+1

Есть много вопросов с тегом oop: http://stackoverflow.com/questions/tagged/oop. –

ответ

1

В Java и .NET структуры, среди прочего, имеющий класса X наследует от Y имеет два преимущества:

  1. экземпляры класс X инкапсулировать значения всех полой Y, и может использовать любого защищенных членов Y на себе, как если бы эти члены принадлежали X; кроме того, определение класса X может использовать статические члены Y, как если бы они были его собственными.

  2. Переменные типа Y может содержать ссылки на экземпляры типа X.

Допуская объект класса расценить как его собственное содержание нескольких других классов делает невозможным иметь и сбросов downcasts сохранить идентичность ; поскольку полезными являются восходящие и понижающие данные, Java и .NET позволяют каждому классу рассматривать членов только одного родителя как своего собственного (члены родительского родителя также являются членами родителя и становятся включенными как таковые). Ограничение включения членов только из одного родительского класса обычно не является чрезмерно ограничительным.

С другой стороны, если каждый тип может храниться только в ссылках своего типа или его типах предков, это будет ограничительным. Чтобы обеспечить возможность сохранения ссылок на объект в нескольких независимых типах, Java и .NET позволяют определять типы интерфейсов. Ссылка на объект, который реализует интерфейс, может храниться в переменной этого типа интерфейса (для достижения второго преимущества наследования), но в отличие от наследования классов, которая ограничена одним родителем, реализация интерфейса относительно неограничена. Класс может реализовывать произвольное количество независимых интерфейсов, а ссылки на такой класс могут храниться в переменных любого из типов этих интерфейсов.

Вкратце, интерфейсы обеспечивают самое важное преимущество наследования (ссылочную замену), но отказываются от некоторых функций в обмен на отказ от значительного ограничения (невозможность наследования от нескольких классов).

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

Интерфейс обеспечивает нам путь многоуровневого наследования.

Интерфейс может быть расширен до любого класса

Общих свойств любого класса можно определить интерфейс и могут быть унаследованы ко многим классам.

Смежные вопросы