Аннотация - мыслить отдельно от конкретных реальностей, конкретных объектов,
или фактические случаи.
В Java вы найдете слово abstract в определениях классов и методов. Это означает, что экземпляр класса не может быть создан (я могу использоваться только как суперкласс) или что метод должен быть переопределен подклассом. Примером этого является класс Animal, Animal слишком неоднозначен, чтобы создавать экземпляр из него, однако Animals имеют общие атрибуты / функциональные возможности, которые должны быть определены в классе Animal.
public abstract class Animal{
protected int calories;
public void feed(int calories){
weight += calories;
}
public abstract void move(); // All animals move, but all do not move the same way
// So, put the move implementation in the sub-class
}
public class Cow extends Animal{
public void move(){
// Some code to make the cow move ...
}
}
public class Application{
public static void main(String [] args){
//Animal animal = new Animal() <- this is not allowed
Animal cow = new Cow() // This is ok.
}
}
Общий - из, применимый или относящийся ко всем членам
род, класс, группа или род; общий.
Термин Generic, или Generics, используется в Java, когда явно объявляет, какой тип объектов будет содержаться в каком-либо объекте-контейнере. Возьмем, к примеру, ArrayList, мы можем поместить любой объект в ArrayList, который захотим, но это может легко привести к ошибкам (вы можете случайно вставить String в ваш ArrayList, который заполнен целыми числами). Обобщения были созданы в Java, так что мы можем явно указать компилятору, что нам нужны только целые числа в нашем ArrayList (с обобщениями компилятор выдаст ошибку, когда вы попытаетесь вставить строку в ваш целочисленный ArrayList).
public class Application{
public static void main(String [] args){
ArrayList noGenerics = new ArrayList();
ArrayList<Integer> generics = new ArrayList<Integer>();
nogenerics.add(1);
nogenerics.add("Hello"); // not what we want, but no error is thrown.
generics.add(1);
generics.add("Hello"); // error thrown in this case
int total;
for(int num : nogenerics)
total += num;
// We will get a run time error in the for loop when we come to the
// String, this run time error is avoided with generics.
}
}