重新理解OOP(java)

面向对象的重新理解总结


一丶 对象

         对象具有三大特征  即封装性、继承性和多态性 。

         由于对象是从具体事务抽象而成,而个体之间存在差异所以,对象理所当然的具有继承性和多态性。

         继承性 其实可以理解为个体与群体的关系,谈论群体时所讨论的是群体中所有个体所具备的共同特征,而个体则在共同特征中存在着与其他个体不同之处  由此可以理解 父类与子类的关系。多态性是基础继承性的,多态特指子类。首先多态性有两种一种是转型,向上转型或者向下转型。另一种是覆写重载。为什么我会说多态性特指子类?首先解释下转型 。转型分为向上转型和向下转型,向上转型相对好理解如:猫 狗等可以称为动物 而动物确不一定可以叫猫或者 狗。向下转型其实也很好理解,但是向下转型有一个必要的条件,那就是他是一个子类,否则无法向下转型。 而重载或者覆写 也可以认为是静态多态与动态多态,静态多态是在编译期的多态,在编译时期即可调用 而动态多态是运行期的多态,在程序真正运行时才会使用。重载是面向方法的 而覆写是面向对象的因此多态性指的是动态的多态。

         封装性是指,隐藏具体的实现过程,只显示结果。注重结果忽视过程,同时也是的其他类无法在外部随意修改,具有较好的安全性(用户是不会管你怎么实现的他们只会认为这是理所当然的)。


二丶使用

        对象是抽象的,是无法直接操作的。在实际使用时都实现将其具象化(new方法)。在java机制中对象运行new()方法后在堆内存创建实例对象 并分配内存,在实际使用的是该对象的句柄(可以理解为C中的指针),该句柄指向堆内存中的对象,在Java中称之为对象引用。

          如:  Cat  c = new Cat();   这句话 java虚拟机会在堆内存中创建一个Cat的实例对象并分配一定的内存,然后c将指向该内存区。由于c只是一个句柄,并不是实际的对象,所以在实际操作的时候,诸如集合 数组等存储对象时存储的是对象的引用而不是实际的对象。实际的对象只有一个这也是为什么存入集合后在外面改变对象的属性 存入集合的对象也会随之改变的原因。在java中是不能直接操作动向的,操作的是对象的引用,如果想要让集合中用于存储的对象独立的话只能新创建一个对象或者clone(克隆)一个对象,不过如果想要使用clone方法的话需要实现Cloneable接口 并实现他的抽象方法。


        个人经验:1.在实际开发中需要合理的设计对象,不可过多的使用(一类多用,处理很多操作),这种情况下如果这些对象没什么联系应分别创建几个新的对象,如果存在某些共同的特征则应使用继承的思想设计几个子类。  2.通过序列化和反序列化 传递的对象 或者获取的对象是新的对象并不是原来的对象  3.如果可以直接获取其他对象的引用并利用get set方法传递对象则对象是同一个引用  再另一边修改对象这边的对象

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值