Java中多态和懒汉式饿汉式区别

多态的区别:
动态绑定(多态):在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
父类引用指向子类对象,但是父类引用所能看到的只属于父类那部分属性和方法。此过程还存在指针指向变化情况(因为重写),从指向原来自己方法变化到指向new出来对象的方法。
以简单程序举例:
classA{intm;publicintgetM(){returnm;}publicvoidsetM(intm){this.m=m;}classBextendsA{intm;publicintgetM(){returnm+100;}}publicclassE{publicstaticvoidmain(String[]args){Bb=newB();b.m=20;System.out.println(b.getM());// 120Aa=b;a.m=-100;System.out.println(a.getM());// -100}}下面针对此题画内存分析图分析并附加代码解释:
caption="" data-size=“normal” data-rawwidth=“600” data-rawheight=“371” class=“origin_image zh-lightbox-thumb” width=“600” data-original="
在这里插入图片描述
!b.m = 20;修改的是B类的属性,如图。b.getM();是取到B对象自己的方法,输出20+100A a = b;此时a指向B对象,但是所能看到的只是父类那部分属性和方法。此过程还发生上 面知识点2中的指针指向变化,如图绿色变变化指向。a.m = -100;因为只能看到父类那部分属性和方法,所以修改的是A对象的属性,如图a.getM();因为此时指向方法的指针发生给变,所以指向的还是B对象的方法(自然用B的属性),输出还是20+100

懒汉式饿汉式:
所谓“懒汉式”与“饿汉式”的区别,是在与建立单例对象的时间的不同。
“懒汉式”是在你真正用到的时候才去建这个单例对象:
比如:有个单例对象
public class Singleton{
private Singleton(){}
private static Singleton singleton = null; //不建立对象
public static synchronized Singleton getInstance(){
if(singleton == null) { //先判断是否为空
singleton = new Singleton (); //懒汉式做法
}
return singleton ;
}
}
“饿汉式”是在不管你用的用不上,一开始就建立这个单例对象:比如:有个单例对象
public class Singleton{
public Singleton(){}
private static Singleton singleton = new Singleton(); //建立对象
public static Singleton getInstance(){
return singleton ;//直接返回单例对象 }}
它有以下几个要素:

私有的构造方法
指向自己实例的私有静态引用
以自己实例为返回值的静态的公有的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值