A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘海芳 中级黑马   /  2013-5-31 23:04  /  1620 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘海芳 于 2013-6-7 16:06 编辑

接口也可以new,使用new创建的是实现了接口的子类。这句话我不太理解。如果多个类实习了接口,那么new接口创建的子类是谁的呢?
如:
接口代码:
  1. public interface Foo {
  2. }
复制代码
子类1代码:
  1. public class Foo1 implements Foo {
  2. }
复制代码
子类2代码:
  1. public class Foo2 implements Foo {
  2. }
复制代码
那么到底创建是谁的子类呢?

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

6 个回复

倒序浏览
子类子类的  你的父类是哪一个呢?你在哪里new了?
回复 使用道具 举报
不明白意思
回复 使用道具 举报
亲,抽象类是不能被实列化的,因为他是抽象的,接口也是一样,怎么办呢,子类可以,对于子类实现接口的,必须实现接口的所有抽象方法,接口有构造方法,是用来给子类创建对象用的,这是多态的应用。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
接口不可以创建对象,因为接口是特殊的抽象类
接口中的都有固定的修饰符:
常量: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;
        }
}
回复 使用道具 举报
这主要是多态的问题,至于你所说的到底创建的是谁的,就像普通的创建啊子类对象一样,比如Zi  extend Fu{},那么就是Fu f = new Zi();那么出现的就是指向的Zi的对象。就是这个样子。
回复 使用道具 举报
是有点不太明白   不过我的理解是在匿名内部类中用到的多态的知识。也就是其中的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("父类指向自己的子类实现类对象");
        }
}



评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马