title: Abstract Data Type vs. non Abstract Data Types (in Java)
body: <p>I have read a lot about abstract data types (ADTs) and I'm askig myself if there are non-abstract/ concrete datatypes?</p>
  
  <p>There is already a <a href="https://stackoverflow.com/questions/1692933/what-is-an-abstract-data-type-in-object-oriented-programming">question</a> on SO about ADTs, but this question doesn't cover "non-abstract" data types. </p>
  
  <blockquote>
    <p>The definition of ADT only mentions what operations are to be
    performed but not how these operations will be implemented</p>
  </blockquote>
  
  <p><a href="https://www.geeksforgeeks.org/abstract-data-types/" rel="noreferrer">reference</a></p>
  
  <p>So a ADT is hiding the concrete implementation from the user and "only" offers a bunch of permissible operations/ methods; e.g., the Stack in Java (<a href="https://docs.oracle.com/javase/7/docs/api/java/util/Stack.html" rel="noreferrer">reference</a>). Only methods like <code>pop()</code>, <code>push()</code>, <code>empty()</code> are visible and the concrete implementation is hidden.</p>
  
  <p>Following this argumentation leads me to the question, if there is a "non-abstract" data type?</p>
  
  <p>Even a primitive data type like <code>java.lang.Integer</code> has well defined operations, like <code>+</code>, <code>-</code>, ... and according to wikipedia it is a ADT.</p>
  
  <blockquote>
    <p>For example, integers are an ADT, defined as the values …, −2, −1, 0, 1, 2, …, and by the operations of addition, subtraction, multiplication, and division, together with greater than, less than, etc., </p>
  </blockquote>
  
  <p><a href="https://en.wikipedia.org/wiki/Abstract_data_type#Defining_an_abstract_data_type" rel="noreferrer">reference</a></p>