首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么实现接口的类不算与Java中的接口类型相同?

这个问题涉及到Java编程语言中的接口类型和实现接口的类的概念。在Java中,接口是一种抽象类型,它定义了一组方法和常量,但不提供具体的实现。实现接口的类需要实现接口中定义的所有方法和常量,以便在运行时可以将其视为接口类型。

当我们说一个类实现了一个接口时,我们实际上是在说这个类提供了接口所需的方法和常量的具体实现。因此,实现接口的类和接口类型在Java中是两个不同的概念。尽管实现接口的类可以被视为接口类型,但它们仍然是具体的类,而不是纯粹的接口类型。

举个例子,假设我们有一个接口Animal,它定义了一个makeSound()方法。然后我们有一个实现这个接口的类Dog,它实现了makeSound()方法。尽管Dog实现了Animal接口,但它仍然是一个具体的类,可以被实例化并使用。

因此,实现接口的类不算与Java中的接口类型相同。实现接口的类是一个具体的类,它提供了接口所需的方法和常量的具体实现。而接口类型是一个抽象的类型,它定义了一组方法和常量,但不提供具体的实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java 到底是应该用接口类型 还是实现类型去引用对象?

如题,Java 到底是应该用接口类型 还是实现类型去引用对象?首先贴出答案: 应该优先使用接口而不是来引用对象,但只有存在适当接口类型时 。...标题描述情况在实际应用代码: //implA 为接口 ClassB为其实现 implA A=new ClassB();//接口类型引用变量A 去接收对象地址 //或者 ClassB A=new...所以这时使用Cat p = new Cat()即来引用是更好。 也就是说,使用接口去引用对象是有前提条件——即实现全是接口方法实现,没有自己单独方法。...当然也存在向下转型, //p.batheSelf();替换为下面形式 ((Cat)p).batheSelf();//向下转型,可正常调用执行 参考文章: Java 到底是应该用接口类型 还是实现类型去引用对象...用接口类型引用变量demo,去接收实现B实例化出来对象地址(这里=是传递地址)。为什么不是B demo=new B(); 呢,这样也不会有问题啊?

1.6K30

java接口定义实现

r);//定义一个用于计算周长方法getCircumference() } 注意: Java文件一样,接口文件文件名称必须接口名同样。...实现接口 接口在定义后,就能够在实现接口。...在实现接口能够使用keywordimplements,其基本格式例如以下: [修饰符] class [extends 父名] [implements 接口列表]{ } 修饰符:可选參数...名:必选參数,用于指定名称,名必须是合法Java标识符。普通情况下,要求首字母大写。 extends 父名:可选參数,用于指定要定义继承于哪个父。...当接口列表存在多个接口名时,各个接口名之间使用逗号分隔。 在实现接口时,方法名字、返回值类型、參数个数及类型必须接口全然一致,而且必须实现接口全部方法。

57810
  • Java实现多线程继承Thread实现Runnable接口区别

    Java中线程创建有两种方式: 1. 通过继承Thread,重写Threadrun()方法,将线程运行逻辑放在其中 2....通过实现Runnable接口,实例化Thread 在实际应用,我们经常用到多线程,如车站售票系统,车站各个售票窗口相当于各个线程。...当我们做这个系统时候可能会想到两种方式来实现,继承Thread实现Runnable接口,现在看一下这两种方式实现两种结果。...三:两者之间比较 为什么会出现两种不同结果呐?...在我们刚接触时候可能会迷糊继承Thread实现Runnable接口实现多线程,其实在接触后我们会发现这完全是两个不同实现多线程,一个是多个线程分别完成自己任务,一个是多个线程共同完成一个任务。

    1.7K10

    Java接口抽象区别

    一、抽象Java,被关键字abstract修饰称为抽象;被abstract修饰方法称为抽象方法,抽象方法只有方法声明没有方法体。...Java接口具有以下几个特点: 1、接口中可以包含变量和方法,变量被隐式指定为public static final,方法被隐式指定为public abstract(JDK 1.8之前); 2、...接口支持多继承,即一个接口可以继承(extends)多个接口,间接解决了Java不能多继承问题; 3、一个可以同时实现多个接口,一个实现某个接口则必须实现接口抽象方法,否则该类必须被定义为抽象...因为JDK 1.8可以对接口方法进行实现,那么当我们不希望实现方法暴露给外部时,则可以将方法定义为private。...三、接口抽象区别 1、抽象可以包含普通方法,但接口中只能包含public abstract方法(JDK 1.8之前); 2、抽象成员变量没有访问权限限制,但接口变量只能被public

    81510

    Java为什么不同返回类型不算方法重载?

    本文已收录《Java常见面试题》:https://gitee.com/mydb/interview 方法重载是指在同一个,定义了多个同名方法,但每个方法参数类型或者是参数个数不同就是方法重载...doSomething } public void method(Integer id, String name) { // doSomething } } 为什么不同返回类型不算方法重载...从方法签名组成规则我们可以看出,方法返回类型不是方法签名组成部分,所以当同一个中出现了多个方法名和参数相同,但返回值类型不同方法时,JVM 就没办法通过方法签名来判断到底要调用哪个方法了,如下图所示...: 那为什么返回类型不能做为方法签名一部分呢?...总结 在同一个定义了多个同名方法,但每个方法参数类型或者是参数个数不同就是方法重载。方法重载典型使用场景是 String valueOf 方法,它有 9 种实现

    3.4K10

    Java抽象接口

    另外,在 Java 接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现对象。...2.接口多继承 在C++语言中一个可以继承多个父,但这会有潜在风险,如果两个父在有相同方法,那么子类将继承哪一个父方法呢?这就是C++多继承所导致冲突问题。   ...在Java只允许继承一个,但可实现多个接口。通过实现多个接口方式满足多继承设计需求。如果多个接口中即便有相同方法,它们也都是抽象,子类实现它们不会有冲突。...四、总结  1 接口相似点: 一个接口可以有多个方法。 接口文件保存在 .java 结尾文件,文件名使用接口名。 接口字节码文件保存在 .class 结尾文件。...接口方法是不能在接口实现,只能由实现接口实现接口方法。  4 接口抽象区别:  抽象方法可以有方法体,就是能实现方法具体功能,但是接口方法不行。

    1.1K81

    Python接口抽象

    所谓接口继承就是定义一个接口 Interface,接口定义了一些接口(就是函数,但这些函数都没有具体实现),子类继承接口,并且实现接口功能~ 接口继承可以使得外部调用者无需关心具体实现细节...,可用相同方式处理继承了特定接口所有对象,这里前提是接口需要做出一个很好抽象~ class Operate_database(): # 接口 def query(self, sql...') # NotImplementedError 子类覆盖父方法时,要注意方法名需要与父方法名相同,且方法参数个数参数名也要相同~ 这里更好方式是通过 abc模块 来实现接口~...抽象 抽象接口一样是一种规范,规定子类应该具备功能。 在Python,抽象接口没有明确界限。...上述示例可以看到,抽象对部分方法进行了实现~ 其实 Python 原生仅支持抽象,不支持接口

    1.7K10

    请说明Java接口和C++相同和不同处。

    01 由于Java不支持多继承,而有可能某个或对象要使用分别在几个或对象里面的方法或属性,现有的单继承机制就不能满足要求。 继承相比,接口有更高灵活性,因为接口中没有任何实现代码。...当一个实现接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个可以实现多个接口。...02 写在后面 本文章将以“指导面试,智取Offer”为宗旨,为广大Java开发求职者扫清面试道路上障碍,成为面试官眼中精英,朋友圈里大神。...在面试场上“胸有成竹”,坦然面对每个面试官“拷问”,做到进可攻“项目经理、项目总监”等高级职务,视之为翘首可及;退可守“Java工程师、Java测试工程师”等职务,视之为探囊取物。

    80420

    Java抽象接口区别

    它需要提供接口中所有声明方法实现 构造器 抽象可以有构造器 接口不能有构造器 正常Java区别 除了你不能实例化抽象之外,它和普通Java没有任何区别 接口是完全不同类型 访问修饰符...多继承 抽象方法可以继承一个实现多个接口 接口只可以继承一个或多个其它接口 速度 它比接口速度要快 接口是稍微有点慢,因为它需要时间去寻找在实现方法。...添加新方法 如果你往抽象添加新方法,你可以给它提供默认实现。因此你不需要改变你现在代码。 如果你往接口中添加方法,那么你必须改变实现接口。...什么时候使用抽象接口 如果你拥有一些方法并且想让它们一些有默认实现,那么使用抽象吧。 如果你想实现多重继承,那么你必须使用接口。...如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口Java8默认方法和静态方法 Oracle已经开始尝试向接口中引入默认方法和静态方法,以此来减少抽象接口之间差异。

    58800

    Java抽象接口区别

    它需要提供接口中所有声明方法实现 构造器 抽象可以有构造器 接口不能有构造器 正常Java区别 除了你不能实例化抽象之外,它和普通Java没有任何区别 接口是完全不同类型 访问修饰符...多继承 抽象方法可以继承一个实现多个接口 接口只可以继承一个或多个其它接口 速度 它比接口速度要快 接口是稍微有点慢,因为它需要时间去寻找在实现方法。...添加新方法 如果你往抽象添加新方法,你可以给它提供默认实现。因此你不需要改变你现在代码。 如果你往接口中添加方法,那么你必须改变实现接口。...什么时候使用抽象接口 如果你拥有一些方法并且想让它们一些有默认实现,那么使用抽象吧。 如果你想实现多重继承,那么你必须使用接口。...如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口Java8默认方法和静态方法 Oracle已经开始尝试向接口中引入默认方法和静态方法,以此来减少抽象接口之间差异。

    1.7K110

    Java抽象接口区别是什么?

    区别 抽象是一种“”,是使用class作为关键字来声明;而接口是另一种数据,是使用interface作为关键字来声明; 抽象可以有各种权限不同、修饰符不同属性,也可以包含普通方法、抽象方法...关系,当普通继承了抽象后,就有义务重写抽象抽象方法,在Java语句中,之间继承是1对1关系;普通接口关系是”实现关系,当普通实现接口后,也有义务重写接口所有抽象方法...,接口实现关系是1对多,即1个可以同时实现若干个接口接口接口之间也可以存在继承关系,且是1对多关系,即某1个接口可以同时继承若干个接口; 3....使用心得 / 装 ,是描述”类别“接口,是描述形为模式、行为特征、规范、标准之间是is a关系;接口之间是has a关系。...Alt + Shift + R 在当前源文件,对某个变量、方法重命名,操作之前需先选中整个名称 Ctrl + D 删除整行或若干行代码,操作模式移动整行代码相同 ---- 未完,待续…

    40820

    Java时间DataTime

    如今Java8提供了LocalDate、LocalTime、LocalDateTime三个日期时间,在安全性和操作性上对比Date和Calendar非常可观。...其次呢,从下面这张图,也就是我们上面运行输出对比,可以看出来,Date可读性很差。...int compareTo(ChronoLocalDate other)` 将此日期另一个日期进行比较。...对于初学者来说,可能觉得能够简单实现出功能就已经足够,但是真正开发项目是不可能仅仅考虑功能实现,还要考虑项目的安全性、稳定性、高性能、高可用性等等!...因此,作为java开发者,多线程知识是必不可少。而也正因为多线程,才会出现一大堆问题(简称线程安全性问题),作为开发者,就应该写出不仅能实现功能代码,还要是线程安全代码。

    1.8K30

    解决Kotlin 实现多个接口,覆写多个接口相同方法冲突问题

    / interface B{ fun x(): Int = 1 } interface C{ fun x(): Int = 0 } /**一个实现了两个接口,两个接口方法相同,这个在覆写时候就会出现冲突.../** * @author:wangdong * @description:继承实现接口方法冲突问题 * 接口方法可以有默认实现 * 签名一致且返回值相同冲突 * 子类(实现...我们都知道 Java 当年高调调戏 C++ 时候,除了最爱说内存自动回收之外,还有一个著名单继承,任何 Java 都是 Object 子类,任何 Java 有且只有一个父,不过,它们可以有多个接口...简单说,继承和实现接口区别就是:继承描述是这个『是什么』问题,而实现接口则描述是这个『能做什么』问题。...以上这篇解决Kotlin 实现多个接口,覆写多个接口相同方法冲突问题就是小编分享给大家全部内容了,希望能给大家一个参考。

    2.3K10

    Java接口和抽象区别

    简单来说, 接口是公开,里面不能有私有的方法或变量,是用于让别人使用,而抽象是可以有私有方法或私有变量, 另外,实现接口一定要实现接口里定义所有方法,而实现抽象可以有选择地重写需要用到方法...,一般应用里,最顶级接口,然后是抽象实现接口,最后才到具体实现。...class 在 Java 语言中表示是一种继承关系,一个只能使用一次继承关系。...4.实现抽象接口必须实现其中所有方法。抽象可以有非抽象方法。接口中则不能有实现方法。   ...5.接口中定义变量默认是public static final 型,且必须给其初值,所以实现不能重新定义,也不能改变其值。

    69140

    Java抽象接口区别

    Java 8 开始,它也可以有默认和静态方法。 最终变量: 在 Java 接口中声明变量默认是最终。抽象可能包含非最终变量。...变量类型: 抽象可以有final、non-final、静态和非静态变量。接口只有静态和最终变量。 实现: 抽象可以提供接口实现接口不能提供抽象实现。...多重实现: 一个接口只能扩展另一个Java接口,一个抽象可以扩展另一个Java实现多个Java接口。 数据成员可访问性: 默认情况下,Java 接口成员是公共。...如果以下任何陈述适用于您情况,请考虑使用抽象: 在java应用程序,有一些相关需要共享一些代码行,那么你可以将这些代码行放在抽象,并且这个抽象应该由所有这些相关进行扩展。...如果以下任何陈述适用于您情况,请考虑使用接口: 它是一个完全抽象,接口中声明所有方法都必须由实现接口实现。 一个可以实现多个接口。它被称为多重继承。

    52920

    Java——抽象接口前世今生

    从多个具有相同特征抽象出一个抽象,以这个抽象作为其子类模板,从而避免了子类设计随意性。...接口名应与名采用相同命名规则,即如果仅从语法角度来看,接口名只要是合法标识符即可;如果要遵守Java可读性规范,则接口名应由多个有意义单词连缀而成,每个单词首字母大写,单词单词之间无须任何分隔符...实现了两个接口,并重写了其中抽象方法 接口和抽象区别: 相同点: 接口和抽象都不能被实例化,它们都位于继承树顶端,用于被其他实现和继承。...一个最多只能有一个直接父,包括抽象;但一个可以直接实现多个接口,通过实现多个接口可以弥补Java单继承不足。 接口和抽象10大面试题: 1. Java抽象可以有构造函数吗?...类似地,如果你接口中有很多方法,你对它们实现感到很头疼,考虑提供一个抽象作为默认实现。这是Java集合包模式,你可以使用提供默认实现List接口AbstractList。 9.

    81520
    领券