浅谈java接口和抽象类不能实例化原因

本文探讨了Java中接口和抽象类不能被实例化的根本原因,通过实例和内存模型解释了实例化的概念。接口在内存中没有实际值需要存储,而抽象类含有未实现的方法,两者实例化都缺乏实际意义,因此Java设计中避免了这种情况,以防止不必要的内存浪费。

首先看看下面这段代码是不是java接口的实例化,代码如下:

class MyThread implements Runnable{
    ............//此处省略
}
//另一个类的main方法中:
Runnable r = new MyThread();

其实很明显,这是父类声明指向子类的引用。具体实例化的是MyThread这个对象。然后进行了思考,针对如下代码: 

Thread t = new Thread(new Runnable(){
    @Override
    public void run(){
        .............
    }
})

这段代码大家也许并不陌生,那么有人要问了,既然接口不能实例化,Runnable是一个接口,此处不是用new来实例化了么。这个其实就是一个假象的实例化而已,这种叫做匿名内部类,实质的代码等同于如下代码:

class MyThread implements Runnable{
    @Override
    public viod run(){
        ...............
    }
}
//另一个类的main方法中
Thread t = new Thread(new MyThread());

只是上面的代码省略掉了类的名字而已。。。。

好了,前面的都是最基础的,我们学习java时老师其实都会讲的,接下来,是一些

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

添码星空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值