2013-11-27 5 views
4

Java Docs говорит:Разница между ссылочным типом и типом объекта?

Когда вы определяете новый интерфейс, вы определяете новый ссылочный тип данных ... []

Некоторые люди используют название «объект типа» для обозначения к классу, используемому для первого экземпляра экземпляра объекта.

Поскольку мы не можем использовать интерфейс для создания объекта, могу ли я сказать, что объект никогда не имеет тип этого интерфейса, но вы можете использовать ссылку этого типа интерфейса для доступа к этому объекту, если он реализует такой вид интерфейс?

Википедия говорит:

[] ... тип данных или просто типа классификации идентификация один из различных типов данных, такие как вещественное, целое число или логическое значение, что определяет возможные значения для этого типа; операции, которые могут быть выполнены по значениям этого типа; смысл данных; и можно сохранить значения этого типа.

Я не вижу, как интерфейс в Java определяет «возможные значения для этого типа: операции, которые могут выполняться по значениям этого типа, значение данных и способ значений этого типа могут быть сохранены. " Мое рассуждение состоит в том, что, поскольку интерфейсы не определяют, что могут делать эти методы, они не являются типами данных, а только типы и примитивные типы определяют типы данных. Интерфейсы определяют только способ использования объекта определенного типа данных при доступе с использованием ссылки.

На основании этого, если кто-то скажет, что объект, реализующий интерфейс, имеет тот же тип интерфейса, могу ли я ответить, что он/она ошибается, поскольку интерфейсы дают только тип для ссылок, а объекты никогда не могут иметь тип интерфейса?

ответ

2

Вы говорите «объект, реализующий интерфейс, имеет тот же тип интерфейса». И поскольку объект является экземпляром класса, он может технически никогда не иметь тот же тип, что и интерфейс, поскольку интерфейс не может быть создан на Java. Интерфейс можно рассматривать как план для класса.

Одна из наиболее известных реализаций, о которых я могу думать, находится в сборниках Java.

Map<Integer, String> mapExample = new HashMap<Integer, String>(); 

Здесь Тип объекта представляет собой тип HashMap и Reference Map (Интерфейс). HashMap наследует методы, объявленные в Map, и обеспечивает их собственную реализацию.

Я не вижу, как интерфейс в Java определяет «возможные значения для этого типа: операции, которые могут выполняться по значениям этого типа, значение данных и способ значений этого типа могут быть сохранены. " Мое рассуждение состоит в том, что, поскольку интерфейсы не определяют, что могут делать эти методы, они не являются типами данных, а только типы и примитивные типы определяют типы данных.адрес

Давайте это на следующем примере:

public interface IHelloWorld { 

    public String helloWorld(String world); 

} 

Здесь у меня есть интерфейс, который содержит метод HelloWorld. Я определил тип доступа как public, я убедился, что он вернет тип String, и он примет параметр String. Поэтому он может определить, что может сделать метод. Любой класс, который реализует этот интерфейс, должен будет предоставить подробности реализации для helloWorld. Если бы я осуществить это, я хотел бы сделать следующее:

public class HelloWorld implements IHelloWorld { 

    public String helloWorld(String world) { 
     return "Hello " + world; 
    }  

} 

Здесь можно увидеть, что, хотя мы не имеем детали реализации в интерфейсе IHelloWorld, мы определяем, что метод HelloWorld собирается вернуться и какой параметр тип, который будет принят.

Надеюсь, это прояснит вам все.

+0

Я где-то читал, что для скрытия некоторых деталей используется интерфейс. Нет никакой цели скрывать то, что уже «спрятано», как частный метод, поэтому, когда мы собираемся определить интерфейс, мы перечислим уже общедоступные методы из класса, который мы хотим сделать доступным через наш интерфейс, и мы перечислим их по их подписи, потому что это подходящий способ ссылаться на методы. – PrinceYann

+0

В моем последнем комментарии есть ошибка. Я хотел сказать, что «мы перечисляем их по их заявлению», а не подписи. – PrinceYann

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