Subject: cure lazy eye...

From: Vision Screening PSA <[email-masked]>
Date: Thu, 15 May 2014 08:45:53 -0700

Healthy Vision PSA -
Restore 20/20 Vision in 2 weeks 

Healthy Vision Journal Posted - 

 With changes in the US healthcare system many are not able to afford optic healthcare. 
This is why scientists released a way to restore 20/20 vision in 2 weeks. 

See Scientist Explanation: http://www.quickluxlight.com/see20/20/psa/announcement.video

- This video has been released bc Optometrists are expected to lose patients once
this info hits nationwide media. 
- Medical experts are admitting that glasses can Worsen your vision...

Full Details of Report -> http://www.quickluxlight.com/see20/20/psa/announcement.video

to modify subscription status w/ Urgent Info Services 
write 3-2-0-5.Lake Sarah.Independence.MN.55359
http://www.quickluxlight.com/djwo30.gno43
here seems to a confusion in this Q&A. The question was about "Abstract Data Type and Interface" and most of the answers concet about "Abstract Classes".

The terms 'abstract data type' and abstract class refer to two entirely different concepts, although both of them use the word 'abstract'. An abstract data type is a self-contained, user-defined type that bundles data with a set of related operations. It behaves in the same way as a built-in type does. However, it does not inherit from other classes, nor does it serve as the base for other derived classes. If you search about it in wiki you would see "An abstract data type is defined as a mathematical model of the data objects that make up a data type as well as the functions that operate on these objects. There are no standard conventions for defining them. A broad division may be drawn between "imperative" and "functional" definition styles." For example, in Java we have List interface. It defines a data structure with set of method to operate on but wont provide any implementaion as such.

In contrast, an abstract class is anything but an abstract data type. An abstract class is a class that is declared abstract  'it may or may not include abstract methods'. Abstract classes cannot be instantiated, but they can be subclassed. It is not a data type. An abstract class is merely a skeletal interface, which specifies a set of services that its subclasses implement. Unfortunately, the distinction between the two concepts is often confused. Many people erroneously use the term abstract data type when they actually refer to an abstract class.

In my opinion Interfaces are Java's way of implementing "Abstract Data type"Java interface is a type, which boils down to a set of method signatures. Any type, willing to be referenced as interface must provide implementation for these signatures. In reality, there is no behaviour contract. Your implementation can do nothing and still be 'implementing' an interface.

Java abstract class is a type, with partially specified behaviour whose internal implementation for some reason must be specified in his inheritor. This class does have behaviour, which can be redefined/specified in his inheritors.

ADT is a set of expected behaviours. You assume, that after calling adt.remove(element) you call adt.get(element) and receive null.

The answer to your question is: just an interface is not enough to be an ADT.

Everything, that correctly implements your interface MyListADT<T> is an ADT. Its external behaviour must conform the ADT concept. This means, that to be considered as ADT, your type must carry implementation, which results either in abstract class or a normal class. For example: java.util.List<T> is an interface for an ADT, but java.util.ArrayList<T> and java.util.LinkedList<T> are actually ADTs, because their actual behaviour does conform the ADT concept.