Both answers above are essentially correct, however, I would point out that A, B and O alleles are all codominant, but the O gene codes for nothing. Similarly, the Rh pos and Rh neg (D and d) alleles are codominant as well, but the gene coding for Rh neg also codes for nothing.
The net effect is the same insofar as the individual's RBC phenotype, but the genes are truly codominant. This matters when looking at RBC genotypes in the transfusion service lab and working out problems with mutations. Sometimes, a mutation occurs that "turns on" a stop code which has prevented an individual from producing a red cell antigen.
There was a case some years ago in England where two group O parents had a group B baby. Since this is ostensibly impossible, the birth of the group B baby raised questions of fidelity in the marriage, and almost resulted in divorce.
Genetic testing showed that one parent had a stop code on one allele on the ABO locus, which caused the parent's phenotype to be group O, but the genotype of the parent included the code for the B enzyme which confers the B antigen to the red cells. It was inactivated by the stop code. A very rare crossing over mutation removed the stop code and "turned on" the gene to produce the enzyme which in turn produces the B antigen.