精华内容
下载资源
问答
  • 接口可以创建对象吗
    万次阅读
    2015-05-31 16:11:33

    一直以来,我一直认为接口是不可以创建对象的,随着学习的不断深入发现这是片面或错误的。接口存在的意义就是支持java的多态机制。java规定接口interface不能直接使用new关键字来创建对象,但并没有限定它不能创建对象。学习了匿名内部类后,可以发现,接口使用匿名方式创建对象也是可以的。

    例如:

    File driec = new File("G:/file/test");
    File[] files = driec.listFiles(new FilenameFilter() {  //FilenameFilter是接口,创建其匿名对象
            @Override
    	public boolean accept(File dir, String name) {
    	return new File(dir,name).isFile() && name.endsWith(".java");
    	}
    });


    如有错误,欢迎指正。

    更多相关内容
  • 接口可以创建对象、实例化吗?

    千次阅读 2021-01-05 17:31:27
    文章目录一、interface的基础知识1. 接口使用interface来定义2.... 接口中不可以定义构造器 意味着接口不能实例化5. Java开发中,接口通过让类去实现implement的方式去使用6. java类可以实现多个接

    一、interface的基础知识

    1. 接口使用interface来定义

    2. Java中 接口和类是并列的两个结构

    3. JDK7以前:只能定义全局变量和抽象方法:①全局常量:public static final的。 ②抽象方法: public abstract 的。 JDK8及以后: 除了定义全局变量和抽象方法以外,还可以定义静态方法、默认方法

    4. 接口中不可以定义构造器 意味着接口不能实例化

    5. Java开发中,接口通过让类去实现implement的方式去使用

    如果实现类覆盖了接口中的所有抽象方法,则此实现类就可以去实例化
    如果实现类没有覆盖接口中的所有抽象方法,则此实现类仍为一个抽象类
    

    6. java类可以实现多个接口----->弥补了java单继承的局限性

    class AA extends BB implements CC,DD,EE
    

    7. 接口与接口之间可以继承,而且可以多继承

    二、接口不能实例化,为什么还会看到new interface?

    举例一

    FileFilter fileFilter = new FileFilter() {
    public boolean accept(File pathname) {
    String tmp = pathname.getName().toLowerCase();
    if (tmp.endsWith("." + "vb")) {
    return true;
    }
    return false;
    }
    };
    

    解释:FileFilter是一个接口。但这里面用到了匿名内部类。FileFilter() {。。。}一大段实现了(implements)接口,而实现接口的类为匿名类,然后再用new创建匿名类的对象。

    举例二

    interface A {
        public void f();
    }
    public class Test {
        A a = new A() {public void f() {return;}};
    }
    

    解释:A a的时候只是声明a为A类型,而new A() {public void f() {return;}};的时候实际上产生了一个匿名类(如果你查看一下编译后的结果,会发现有一个Test$1.class的文件,这个就是匿名类,后面的数字是自动编号的),而a所指的具体对象就是Test$1这个类型的对象。

    可以将上面的代码改写成普通的实现接口的方式

    interface A {
        public void f();
    }
    
    class NiMingB implements A{
    	public void f() {return;}
    }
    
    public class Test{
    	NiMingB niming = new NiMingB();	
    }
    

    总结:接口无法直接创建对象,但是实现了接口的类可以创建对象,我们实现了某一个接口,就相当于创建了这个接口的一个子类,接口就是这个类的父类,而父类引用 是可以指向之类对象的。所以我们不是创建的不是接口对象,而是实现了该接口的类的对象,也就是接口的子类对象。

    展开全文
  • Java采用接口方式创建类的对象

    千次阅读 2020-11-27 17:47:15
    采用接口方式创建类的对象 与用类创建类的对象的方式相似,只是将第一个类名改为接口名。 若有 类student 接口Person 类student实现Person 即class student implements Person 则用类创建类的对象为 student s1=...
    采用接口方式创建类的对象

    与用类创建类的对象的方式相似,只是将第一个类名改为接口名。
    若有

    • 类student
    • 接口Person
    • 类student实现Person 即class student implements Person

    则用类创建类的对象为

    • student s1=new student();

    用接口方式创建为

    • Person p1=new student();

    注: 用接口方式创建的类的对象,只能用对象名.方法名 访问接口中定义的方法,不能访问类中自己定义的属性和方法以及接口中的属性。

    详见下面代码:

    代码示例:

    interface face01
    {
        double pi=3.14;
        abstract void getArea();         //对face01接口定义两个抽象方法
        abstract void getLength();
    }
    class Circle implements face01 {
        double radius;
        Circle(double r)                      //用构造方法对半径赋值
        {
            radius = r;
        }
    
        public void getArea() {
            System.out.println("圆的面积为:" + radius * radius * pi);
        }
    
        public void getLength() {
            System.out.println("周长为:" + 2 * pi * radius);
        }
    }
    public class CSDN {
        public static void main(String[] args) {
        	System.out.println("--采用普通方式创建类的对象--");
            Circle c1=new Circle(5.5);
            c1.getArea();
            c1.getLength();
            System.out.println("--采用接口方式创建类的对象--");
            face01 c2=new Circle(7.6);
            c2.getArea();
            c2.getLength();
        }
        }
    

    结果:

    --采用普通方式创建类的对象--
    圆的面积为:94.985
    周长为:34.54
    --采用接口方式创建类的对象--
    圆的面积为:181.3664
    周长为:47.728
    
    Process finished with exit code 0
    

    注:

    1. 在该题中,若使用c2.radius对半径进行赋值,则会报错,不能运行。
    2. 也不能用c2.pi对pi的值进行更改,因为接口中属性默认为公共的静态最终变量(即public static final)。
    展开全文
  • 这种情况搞不懂,创建对象成功了,是只要把抽象方法给具现化了就能创建吗? ``` abstract class Driver { public abstract void drive(); } public class Test { public static void main(String[] args) ...
  • 创建实现Java的接口类的对象

    万次阅读 2019-02-01 12:39:32
    public interface Jiekou { ...//实现接口的class public class Jiekouimple implements jiekou{  public void s(); } public class Test(  public static void main(String[] args) {  ...

    public interface Jiekou {
        public void s();
    }
    //实现接口的class
    public class Jiekouimple implements jiekou{
        public void s();
    }

    public class Test(
        public static void main(String[] args) {
            Jiekou  jiekou = new Jiekouimple ();
    }
    )

     

    接口是不能实例化的,即不能new一个接口出来,但是可以创建一个接口实现类的对象;

    必须要重写接口中的方法

    Jiekou jiekou = new Jiekou() {
        @Override
          public void s() {
            
        }
    };

     

    接口的使用规范:

    1.接口中可以定义常量,不能定义变量,如果你在接口中定义属性,那么通过反编译可以看见他会自动用public static final 修饰,接口中的属性都是全局静态常量,接口中的常量必须在定义时指定初始值。

    2.接口中所有的方法都是抽象方法,接口中方法都会自动用public abstract 修饰,即接口中只有全局抽象方法。

    如:

    public interface UserDao {
        String var = "常量1";
        Integer t = 23;
        User getById(Long id);
    }

    反编译后的:

    package com.slef.dao;

    import com.slef.model.User;

    public abstract interface UserDao
    {
      public static final String var = "常量1";
      public static final Integer t = Integer.valueOf(23);

      public abstract User getById(Long paramLong);
    }

     

    展开全文
  • ![图片说明](https://img-ask.csdn.net/upload/201703/14/1489477795_107145.png) CharSequence是一个接口
  • 接口的实现类创建对象时,都要用多态吗?还是有什么其他的情况?因情而异?
  • /* 抽象类和接口作为形式参数: ... //抽象类和接口虽然都不能直接创建对象,但是可以通过多态进行对象的创建... */ //************抽象类作为形式参数*********** abstract class Person { publi
  • 通过接口抽象类“创建对象

    千次阅读 2018-08-21 21:36:24
    首先声明,用接口或者抽象类实例化一个对象是不可能的,错误的。 接口、抽象类实现注意点 Interface 属性默认都是 public static final 方法默认都是 public abstract 都不用显示声明 抽象类 至少含有一个...
  • JAVA可以使用如下方法来创建基于接口的匿名实现类对象 new<接口名>(){ //重写方法 }; package hello2; /** * 创建匿名的接口实现类对象:临时创建了一个没有命名的接口实现类 * 代码简约化 * */ ...
  • 接口--实例化接口对象的三种方式

    千次阅读 2019-12-26 17:45:12
    当我们创建了一个接口的时候,我们是无法像创建对象一样,直接实例化接口对象的。所以在这里,我来分享三种方式来实例化接口对象。 //这里会提示'Student' is abstract; cannot be instantiated,也就是说接口是...
  • Java对象创建过程

    万次阅读 2022-03-28 17:54:13
    java对象创建过程、对象的组成、对象头、实例数据、对齐填充、对象创建方式、new关键字、Class类的newInstance方法、Constructor类的newInstance方法、Object类的clone方法、反序列化、无父类的对象创建、有父类的...
  • 一 首先接口不能实例化对象这是毋庸置疑的 !!!! 原因:1.实际语义是实例化一个实现该接口的匿名内部类,接口本身是用来抽象的,实例化接口没有意义。 2.实例化实际意义是在jvm的堆中开辟出一块内存空间,比如...
  • 抽象类能否创建对象

    千次阅读 2020-07-16 20:06:40
    抽象类和接口都能创建对象,只是后边的new不能是new他们自己,但可以new他们的实现类(必须是类,不能是抽象类和接口), 人们使用抽象类和接口只是为了说明要干什么事,而让他们的实现类去根据自己的需要去实现这些...
  • 创建对象的5种方式

    千次阅读 2021-03-20 20:44:40
    这是我们最常见的创建对象的方式,通过这种方式我们还可以调用任意的构造器(无参的和有参的)。 public class Main { public static void main(String[] args) { Person person1 = new Person(); Person pe
  • 抽象类为什么不能创建对象

    千次阅读 2020-07-10 17:24:06
    在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。 抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当...
  • Java中4种创建对象的方法

    千次阅读 2022-04-23 18:20:10
    4种创建对象的方法: 使用 new 关键字调用对象的构造器; 使用 Java 反射的 newInstance() 方法; 使用 Object 类的 clone() ...Java 反射中有一个 newInstance() 方法,可以创建对象,步骤如下:获取要创建的类的 Cl
  • 实例化泛型对象 在你发布的代码中,不可能创建一个泛型T,因为你不知道它是什么类型: public class Abc<T> { public T getInstanceOfT() { // There is no way to create an instance of T here // since...
  • java接口对象区别

    万次阅读 2017-11-21 08:35:57
    深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为...
  • 工厂模式(创建对象的最佳方式)

    千次阅读 2021-07-14 10:01:02
    在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 工厂模式具体包括了简单工厂、工厂方法、抽象工厂,它们是按照从简单到复杂的顺序排列的,属于设计...
  • java利用反射为接口实例化对象并调用 package xxxxx; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import xxxxx.MyLibrary.MyCallback; import java.lang.reflect.InvocationHandler; ...
  • C语言接口与实现:创建可重用软件的技术.pdf

    千次下载 热门讨论 2011-09-30 17:46:11
    与当前某些面向对象语言不同,c语言为创建可重用应用程 序接口(application programming interface,api)提供的语言和功能支持非常少。尽管大多 数c语言程序员在自己所编写的每一个应用程序中都使用api和实现api的库...
  • 不能创建对象的三种情况!!!

    千次阅读 2019-05-21 21:26:58
    不能创建对象的三种情况 private修饰的私有对象          构造方法私有,不能创建对象         原因 : 因为子类要创建对象,...
  • Java有哪些创建对象的方式? 1、用new关键字创建对象,需要使用构造器。 2、使用反射机制创建对象,用Class类或Constructor类的newInstance()方法。 3、通过object类的clone方法 4、使用反序列化
  • Spring——Spring容器创建对象的特点

    千次阅读 2021-03-08 12:08:00
    1.Spring容器创建对象的特点 1.1 Spring是在什么时候创建的对象? 1.2 Spring容器创建对象,一次创建几个? 1.3 获取Spring容器中定义的对象数量、名称 1.4 Spring创建非自定义类对象、没有接口的类对象 1....
  • package javademo9; import java.util.Scanner; interface Fruit{ } class Apple implements Fruit { public Apple() { ...创建了一个苹果对象"); } } class Pear implements Fruit { public Pea...
  • 我们可以定义一个接口类型的引用变量来引用实现接口的类的实例,当这个引用调用方法时,它会根据实际引用的类的实例来判断具体调用哪个方法,这和上述的超类对象引用访问子类对象的机制相似。//定义接口InterA ...
  • Java创建对象的四种方式

    万次阅读 多人点赞 2016-05-09 16:47:56
    该类的对象可以被序列化。如果某类未实现 Serializable 接口,则该类对象不能实现序列化。 保存状态的目的就是为了在未来的某个时候再恢复保存的内容,这可以通过反序列化来实现。对象的反序列化过程与序列化...
  • 官方给的接口 使用FunctionalInterface接口,只有一个get方法 @FunctionalInterface public interface Supplier<T> { /** * Gets a result. * * @return a result */ T get(); } 解析 如下列代码...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,848,895
精华内容 739,558
关键字:

接口可以创建对象吗