黑马程序员技术交流社区
标题:
关于接口使用new操作符的问题
[打印本页]
作者:
刘海芳
时间:
2013-5-31 23:04
标题:
关于接口使用new操作符的问题
本帖最后由 刘海芳 于 2013-6-7 16:06 编辑
接口也可以new,使用new创建的是实现了接口的子类。这句话我不太理解。如果多个类实习了接口,那么new接口创建的子类是谁的呢?
如:
接口代码:
public interface Foo {
}
复制代码
子类1代码:
public class Foo1 implements Foo {
}
复制代码
子类2代码:
public class Foo2 implements Foo {
}
复制代码
那么到底创建是谁的子类呢?
作者:
赵利斌
时间:
2013-5-31 23:10
子类子类的 你的父类是哪一个呢?你在哪里new了?
作者:
ZhaoYuBetter
时间:
2013-5-31 23:13
不明白意思
作者:
廖志强
时间:
2013-5-31 23:26
亲,抽象类是不能被实列化的,因为他是抽象的,接口也是一样,怎么办呢,子类可以,对于子类实现接口的,必须实现接口的所有抽象方法,接口有构造方法,是用来给子类创建对象用的,这是多态的应用。
作者:
山鹰
时间:
2013-5-31 23:55
接口不可以创建对象,因为接口是特殊的抽象类
接口中的都有固定的修饰符:
常量:public static final String NAME;
方法: public abstract void show();
楼主说的是不是多态的体现,接口应用指向子类的对象
[code]public interface A {
public static final int Num = 3;
public abstract String str();
public abstract void show();
}
public class B implements A{
public static void main(String[] args) {
A a = new B();//接口引用指向子类对象
}
public void show() {//重写接口的方法
}
public String str() {//重写接口的方法
return null;
}
}
作者:
王浩骅
时间:
2013-6-1 00:10
这主要是多态的问题,至于你所说的到底创建的是谁的,就像普通的创建啊子类对象一样,比如Zi extend Fu{},那么就是Fu f = new Zi();那么出现的就是指向的Zi的对象。就是这个样子。
作者:
李玉江
时间:
2013-6-1 00:15
是有点不太明白 不过我的理解是在匿名内部类中用到的多态的知识。也就是其中的new一个接口的子类实现类对象。比如
interface A
{
void show();
}
class Demo
{
public static void main(String[] args)
{
new A(){
public void show()
{
System.out.println("匿名内部类对象");
}
}.show();//new A(){}是接口的实例类类对象。调用他复写接口后的show方法
System.out.println("父类指向自己的子类实现类对象");
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2