title: Abstract data type vs Data Type vs Data Structure, with respect to object-oriented programming
body: <p>It is my understanding that a data structure is essentially a blueprint which contains all the information necessary to create a final product according to its specification, and a data type is a physical implementation or realization of that design (quite similar to the difference between a genotype and phenotype, from biology).</p>
  
  <p>When it comes to object-oriented oriented programming, would it be accurate to say that an <em>abstract class</em> or <em>interface</em> is a data structure, because it contains a set of values and declared behaviors, and that a <em>class</em> which implements that abstract class or interface is a data type, because it is a concrete manifestation of those behaviors?</p>
  
  <p>If this is the case, then what about the distinction between an <strong>abstract data type</strong> (ADT) and a <strong>data type</strong>? Are they truly distinct, or is ADT just colloquially shortened to 'data type'?</p>
  
  <p>I ask this because it has seemed to me that these terms are often used interchangeably in conversation, and it made me wonder if my understanding was incorrect.</p>