对于Java封装、继承、多态的新理解

封装

封装包括两个字,封和装。先是装,后才封。在面向过程语言中,一般数据都是相互独立,例如姓名、年龄、性别这些数据,虽然它们都是在描述一个人,但是它们数据是离散的。这样就不便于数据的传递,例如方法需要的参数为姓名、年龄、性别等一系列参数,那么势必导致方法看起来很臃肿。所以我们把一系列相关描述同一对象的“数据”装起来,用被称为“类”的名称包装起来,那些“数据”也抽象为“属性”。这时在数据传输的过程直接传送这个抽象类的实例对象。那为什么要封呢?封就是为了提高数据的安全性,对象的属性不是谁都能改的,要改必须通过这个对象提供的“方法”来对其属性进行操作,使之满足一定的规范约束,所以这就有了“权限”的概念。我们一般把属性设为private(私有),提供操作属性的public(公有)方法。

继承

我们知道子类可以继承父类的所有非私有的属性和方法,这个只是权限层面的理解。而对于内存层面的继承呢?对于内存的继承我今天才知道,原来子类会把父类对象声明的属性全部拷贝一份,然后在堆内存中创建一份和父类对象一样的对象,不管父类的属性的访问权限是怎样的,全都拷贝,只是子类对象对于新拷贝的对象属性还是有访问权限的约束。简言之,子类在内存中会复制一份父类对象声明的所有的属性和属性值以及权限,只是子类对于复制过来的private权限的属性还是不能直接访问。对于父类方法的拷贝却不同,子类只拷贝父类方法的权限,不会拷贝方法片段。因为在内存中,方法片段(代码)是存在方法区的,而每个方法对应有一个方法栈针存放在栈中,方法栈中存放着的是方法签名。
待续….

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值