that既可以指代人 也可以指代物 有些特殊情况只能用that 比如先行词是不定代词 something anyone 或者之前有最高级或者序数词修饰 the youngest/first one that……
who 或者whom 只能指代人 who既可以做主语 也可以做宾语 但是whom只能在定语从句中做宾语
which 只能指代物
另外需要之前加介词的时候 只能用which 比如 in/on/by which 这个时候通常也可以使用when where等
另外在定语从句之前有逗号隔开的时候 只能用which而不能用that 一般这个时候是指代之前一整个句子
比如
He didn't have breakfast,which makes him hungry now
他没有吃早饭这件事情 导致了他现在觉得很饿
when是先行词是时间 而且时间在定语从句中做状语
He will not forget the day when/on which he met his wife
定语从句还原以后是 他遇见他的妻子on the day 所以day是句子的状语 而不是主语或者宾语
if不能引导定语从句 可以引导宾语从句
和when相似的是where 也是只有做状语的时候才用where 否则用that或者which
He will not forget the park where/in which he met his wife
这个时候先行词是做地点的名词