Super Market Pricing Model
String Name; – Variable names begin with lowercase by convention: String name;.
unit_price; unit_type; – Variable names are camel case by convention: unitPrice; unitType;
boolean groupOffer – It's convention to start boolean variables with is..., has..., can..., must...: boolean isEligibleForGroupOffer. Such you also don't need the comment.
int unit_price;  int buy,get;


Your amounts are integers only? Really? Not float or BigDecimal:


  Currency
  
  It is recommended to use BigDecimal class while dealing with Currency or monetary values as it provides better handling of floating point numbers and their operations.

buy and get are verbs that fit better to a method name. Do you mean buyingPrice and sellingPrice?
More than one variable declaration per line is discouraged.

I'd rename UnitType to SellingUnitand NUMERIC to PIECES.
I'd implement the body of your first constructor with just:

this(name, unitPrice, sellingUnit, isEligibleForGroupOffer, 0, 0);

And the one of the second with:

this.name = name;
this.unitPrice = unitPrice;
this.sellingUnit = sellingUnit;
this.isEligibleForGroupOffer= isEligibleForGroupOffer;
this.buyingPrice = buyingPrice;
this.sellingPrice = sellingPrice;

I'd add a space after the commas in parameter and argument lists for easier reading.
I'd change static ... getPrice(...) to a non-static member of Product with then a header of public BigDecimal getPriceFor(float quantity).
It's convention to separate name and parenthesis in statements like if (...) with a space to easily distinguish them from method invocations.
I'd simplify:

float price = product.unit_price * quantity;
//To decrease the price of free items.
if(product.groupOffer) {
  price = (quantity/(product.buy+product.get)) * product.buy * product.unit_price; 
}
return price;


to:

return isEligibleForGroupOffer  //To decrease the price of free items.
         ? quantity / (buyingPrice + sellingPrice) * buyingPrice * unitPrice
         : unitPrice * quantity;