What is the difference between for update of columnname and for update?

select * From emp
for update of sal;

Here it locks entire table.

update emp
set job ='SALESMAN'
where empno=7369;

Eventhough I am updating job from another session it is blocking. Then what is use of specifying for update of sal?

The following statement also doing the same.
select * From emp for update ;

Then what is the difference between for update of sal and for update statement?