Member 13567385 Ответов: 2

Только объекты класса могут быть типом


У меня есть часть вопроса, который я не могу понять. Предполагается, что я изменяю код таким образом, чтобы только объекты класса (объекты, имеющие конструкторы) могли быть типом. Я не понимаю, что означает вторая часть вопроса, поэтому вот мой вопрос:

Существуют ли случаи, когда в качестве типов допускаются только объекты класса? Если да, то что это такое?

Что я уже пробовал:

Я попробовал Google, просматривая свои заметки и просматривая учебник

________________

Каждая "программируемая вещь (байт как наименьшая единица хранения)" имеет свой собственный адрес в оперативной памяти (случайная память оценки).
Таким образом, проблема хранения более 1 байта была решена путем определения "типов данных" в языках высокого уровня.
Простые типы - например, integer, был преобразован в полный класс стека в .NET (и у него есть методы "ToString ()"), но остается простым указателем на адрес первого байта в C++ или Java.

Для программиста - "тип"-это только определение того, как сохранять-считывать данные из памяти.
"Экземпляр" - это реальное место в памяти, занимаемое данными.

________________

Итак, в вашем предложении- "класс" - это "тип", потому что это не простой тип - как целое число, байт....
Правильное значение зависит от того, о чем мы говорим - Java, C, C++, C#....

2 Ответов

Рейтинг:
2

OriginalGriff

Я предполагаю, что вы имеете в виду в общем методе или классе:

public T MyGenericMethod<T>(T myParameter)
   {
   ... 
   }
Если это так, то да, довольно легко ограничить тип класса теми, у кого есть конструктор:
public T MyGenericMethod<T>(T myParameter) where T: new()
   {
   ... 
   }
Если класс, с которым вы используете метод, не является конкретным классом, имеющим открытый конструктор без параметров, вы получите ошибку.

Если это не то, что вы пытаетесь выяснить, вам придется объяснить себя гораздо более подробно.


Рейтинг:
1

CPallini

Существуют языки программирования, в которых каждая переменная экземпляра является объектом класса (А класс представляет его тип). Они называются чистый OOP языки. Вот такой пример smalltalk. C# и Java например, не являются чистыми OOP языки.