In many languages, you "have" an age, hunger or cold. In English, these things describe you, so you are them: English uses be.
1. Age
- I am 25. / I am 25 years old. (not "I have 25 years")
- My son is three.
- How old are you? (not "How many years do you have?")
Say "25" or "25 years old", but not "I am 25 years".
2. Hungry, thirsty, cold, hot
- I am hungry. (not "I have hungry")
- Are you thirsty?
- Close the window, I am cold.
For the weather, the subject is it: It is cold today.
3. Afraid, right, wrong, lucky, ashamed
- She is afraid of dogs. (not "She has fear of dogs")
- You are right. / I was wrong. (not "You have reason")
- We were lucky. (not "We had chance")
- He is ashamed of what he said. (not "He has shame")
4. But an illness or a pain → have
Use have with a noun: an illness, a pain, or something you own.
- I have a cold. (an illness) / I am cold. (the temperature)
- She has a headache.
- He has a fever.
5. Common mistakes
- ❌ I have 30 years.
- ✅ I am 30. / I am 30 years old.
- ❌ I have hungry.
- ✅ I am hungry.
- ❌ You have reason.
- ✅ You are right.