Why is not possible in english that we can say "My son has ten years" the point is that we use verb " to have" not "to be ". For example in my mother language we have two options when we use to have "Moj sin ima deset godina" and when we use verb to be it is sounds "Moj sin je desetogodišnjak".O.K. this is not topic for discussion like that but I'm just thinking about differences.No hard feelings.:-)
In modern English, you would say "My son is ten years old." There is no real reason; that is just the way it is. You might sometimes see older - centuries older - or poetic uses with a form of "have," but they sound rather archaic in most contexts.
But aren't your examples slightly different? Wouldn't it be like My son is ten years old and My son is a ten-year-old? By the way, in my native language we also use have: Mój syn ma dziesięć lat or Mój syn jest dziesięciolatkiem
P.S. Funny thing is we have a noun godzina, which means an hour ;)