打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
编程思想笔记《对象导论》
userphoto

2023.08.29 天津

关注

  对象导论

  • 万物接对象。

  • 程序是对象的集合。

  • 每个对象都有自己的有其他对象所构成的存储。

  • 每个对象都拥有类型。

  • 某一特定类型的所有对象都可以接收同样的消息。

1、对象接口 

每个对象只满足某些请求,这些请求由对象接口定义

  例如灯泡,类型/类名称为Light,可以向Light发出的请求:打开、关闭、调亮、调暗。

Light it = new Light();
lt.on();

对象“引用”(it),然后调用new方法来创建该类型的薪对象。为了向对象发送消息,需要声明对象名称,并以点符号链接一个消息请求。 2、隐藏具体实现 Java用三个关键字在类的内部定义边界:public、private、protected。决定了紧跟其后被定义的东西被谁使用。

  • public:表示其后元素对任何人使用

  • private:除类型创建者和内部方法外,任何人都不允许访问。

  • protected:作用与private相当,差别在于继承的类访问protected成员,但是不能访问private成员。

  • 注意:java默认访问权限private,当前面没有任何指定访问词时,它将发挥作用。

3、多态可换对象 

  

  一个面向对象程序肯定会在某处包含向上转型,因为这正是将自己从必须指定确切类型中解放出来的关键。

在doSomething方法代码中:shape.erase();shape.draw(); 这里表达的意思仅仅是“你是一个Shape,我知道你可以erase和draw你自己。”

当java编译器在编译doSomething()时,不能知道确切类型。所以通常会期望它的编译结果调用基类Shape的erase()和draw(),而不是具体的Circle。

4、容器 

例如List(存储序列)、Map(关联数组,建立对象之间的关联)、Set(每种对象类型只有一种),以及队列、树、堆栈构件。 

容器的选择

  • 不同的容器提供了不同类型的接口、行为。堆栈相比队列具备不同的接口和行为,也不同于集合和列表的接口和行为。 

  • 不同容器的效率不一样的。 例如ArrayList和LinkedList。ArrayList随机访问元素是一个花费固定时间的操作,而LinkedList随机选取元素在列表中移动,代价比较高,也就是越靠表尾的元素,花费时间越长。但是想在序列中插入元素,LinkedList要比ArrayList代价要低。 

5、并发编程 

并发看起来简单,但是有一个隐患:资源共享。如果多个并发任务访问同一资源,就会出现问题。比如,两个进程不能同时向一台打印机发送消息。我们只有使用期间共享资源被锁定,完成任务后再释放资源,使其他任务可以使用资源,才能解决。 

Java8已经内置并发库completefuture,或者使用京东并发库框架(asyncTool),都可以很好的解决资源共享锁的问题。

总结

OOP和Java不一定适合所有人。重要是正确评估自己的需求,如果java可能不能满足你的具体实现,应该参考其他的选择。比如Python,就算最终选择java,至少也要清楚哪些选项可以提供。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
1.9 容器
Java基本概念:集合类 List/Set/Map 的区别和联系
java容器中list和set总结
Java集合总结
Java数组和java.util包容器(下)
Java容器学习笔记(一) 容器中基本概念及Collection接口相关知识
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服