The Problems in OO Typing(Not Finished)

博客围绕继承的类型问题展开,涉及封装、继承和多态等方面。着重讨论了继承的类型,包括协变类型、逆变类型和不变类型,分析了每种类型存在的问题,如协变类型存在类型不安全问题,逆变类型缺乏灵活性,不变类型则兼具两者缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
Typing of
? Encapsulation (Solved: existential types [Girard 71])
?  Inheritance (Partially solved)
?
  Polymorphism (Open issue)
 
 
 
 
Typing Inheritance
1.
Covariant Typing
Animal {
   Shit eats(Food)
}
Cow extends Animal {
  CowShit eats(Grass)
}
Problem: Not type sound
Animal a = new Cow();
Food f = new Hamburger();
a.eat(f); //Food poisoning
 
2.
 
Contravariant Typing
Animal {
   Shit eats(Grass)
}
Cow extends Animal {
  CowShit eats(Food)
}
Problem:
Sound but not flexible
3.
 
Novariant Typing
Animal {
   Shit eats(Food)
}
Cow extends Animal {
  Shit eats(Food)
}
Problem:
Worst of both worlds.
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值