当前位置:   article > 正文

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

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

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

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

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

  1. Thread t = new Thread(new Runnable(){
  2. @Override
  3. public void run(){
  4. .............
  5. }
  6. })

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

  1. class MyThread implements Runnable{
  2. @Override
  3. public viod run(){
  4. ...............
  5. }
  6. }
  7. //另一个类的main方法中
  8. Thread t = new Thread(new MyThread());

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

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

java的接口为什么不能实例化呢?首先,我们需要明白实例化的含义。实例化实际意义是在jvm

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/article/detail/55847
推荐阅读
相关标签
  

闽ICP备14008679号