当前位置: 代码迷 >> J2SE >> Java抽象类的有关问题
  详细解决方案

Java抽象类的有关问题

热度:24   发布时间:2016-04-23 20:24:25.0
Java抽象类的问题
本帖最后由 psiloveyou 于 2014-08-12 16:28:23 编辑
对于一个类,如果没有抽象方法,但是被声明为抽象类即

public abstract class Test{
    public void print(){
        System.out.println("HelloWorld");
    }
}

这个类是不能实例化的,但是如果在这个类增加一个方法

public abstract class Test{
    public void print(){
        System.out.println("HelloWorld");
    }
    public Test create(){
        return this;
    }
}

当一个类继承自这个abstract类时,调用这个create 方法,不就算是实例化了这个类了吗?

还是因为当实例化时,this已经指向子类的对象了,所以不算是实例化?

------解决方案--------------------
引用:
Quote: 引用:

实例化是new,没new你怎么调用所谓的create方法

我可以new 一个子类的对象,利用子类的对象调用create()方法,是不是此时create中返回的就是子类的对象了。

那样的话,this就是子类对象的引用
------解决方案--------------------
引用:
Quote: 引用:

实例化是new,没new你怎么调用所谓的create方法

我可以new 一个子类的对象,利用子类的对象调用create()方法,是不是此时create中返回的就是子类的对象了。


可以这么理解,这个抽象父类的this可以理解为就是给子类准备的
------解决方案--------------------
首先你要调用create()就得创建一个实例对象吧,就算你用   父类对象 Test  xx = new Test的子类()。实际在调用的时候,xx.create().调用的也是子类的方法。所以return this,并不是什么返回子类对象,它一直都是返回当前自己的对象,只是此时你调用的子类的create方法。所以返回的就是你创建的对象啊
  相关解决方案