面向对象编程的思想(3)
开闭原则是面向对象开发中所有设计原则的核心
名称:开闭原则(Open Closed Principle)OCP
核心:一个对象对扩展开放,对修改关闭。换言之:程序中的实体对象(模块、类、方法等)应该可以进行扩展,但不应该可以修改。对类的修改是通过增加代码实现的,而不能通过修改代码实现。
例子:例如我们设计一个Animal类:
1 public class Animal{
2 //动物会呼吸
3 public void breath(){
4 System.out.println("呼吸!");
5 }
6 }
设计一个Cat类继承Animal类:
1 public class Cat extends Animal{
2 public void catchMouse(){
3 System.out.println("猫抓老鼠!");
4 }
5 }
客户端测试代码:
1 public class TestCat{
2 public static void main(String[] args){
3 Cat cat = new Cat();
4 cat.breath();
5 cat.catchMouse();
6 }
7 }
运行结果:
呼吸!
猫抓老鼠!
如果现在有一只超强的猫,叫mimi的也会游泳:实现过程如下:
设计一个Animal类:
1 public class Animal{
2 //动物会呼吸
3 public void breath(){
4 System.out.println("呼吸!");
5 }
6 }
设计一个Cat类继承Animal类:
1 public class Cat extends Animal{
2 public void catchMouse(){
3 System.out.println("猫抓老鼠!");
4 }
5 }
设计一个MimiCat类:
1 public class MimiCat extends Cat{
2 public void swimming(){
3 System.out.println("咪咪在游泳!");
4 }
5 }
客户端测试代码:
1 public class TestCat{
2 public static void main(String[] args){
3 Cat cat = new Cat();
4 cat.breath();
5 cat.catchMouse();
6
7 System.out.println("超强猫mimi的行为:");
8 MimiCat mimi = new MimiCat();
9 mimi.breath();
10 mimi.catchMouse();
11 mimi.swimming();
12 }
13 }
呼吸!
猫抓老鼠!
超强猫mimi的行为:
呼吸!
猫抓老鼠!
咪咪在游泳!
请按 ENTER 或其它命令继续
在这个过程中,对cat扩展成mimicat时,是通过添加代码实现,并没有修改cat的代码,对原来使用cat类的代码是没有影响的。
总结:上边的MimiCat类作为Cat的子类,复用Cat和Animal的代码。并在父类的基础上添加新的行为。在面向对象的编程中,继承是抽象化的具体实现。
优点:开放封闭原则的核心是面向抽象编程,而不是面向具体编程,抽象是相对稳定的,让类依赖与抽象,对修改来说就是封闭的。面向对象编程中的继承及多态机制,可以实现对抽象体的继承,重写方法改变其固有行为,实现新的方法,达到扩展开放的目标。
后记:面向对象编程中,通过继承实现对类的扩展,实现封闭修改和扩展开发的目地。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具