java继承-------接口

接口的概念

接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。

接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。

请记住:一切事物均有功能,即一切事物均有接口。

接口的定义

public interface 接口名 {

抽象方法1;

抽象方法2;

抽象方法3;

}

接口关键字

使用interface        是公共的方法

使用interface代替了原来的class,其他步骤与定义类相同:

l  接口中的方法均为公共访问的抽象方法

l  接口中无法定义普通的成员变量

接口的继承

实现使用implements。

class 类 implements 接口 {

重写接口中方法

}

注意

在类实现接口后,该类就会将接口中的抽象方法继承过来,此时该类需要重写该抽象方法,完成具体的逻辑。

l  接口中定义功能,当需要具有该功能时,可以让类实现该接口,只声明了应该具备该方法,是功能的声明。

l  在具体实现类中重写方法,实现功能,是方法的具体实现。

于是,通过以上两个动作将功能的声明与实现便分开了。(此时请重新思考:类是现实事物的描述,接口是功能的集合。)

接口中成员的特点

关键字

final

1,接口中可以定义变量,但是变量必须有固定的修饰符修饰,public static final 所以接口中的变量也称之为常量,其值不能改变。

2、接口中可以定义方法,方法也有固定的修饰符,public abstract

3、接口不可以创建对象。

4、子类必须覆盖掉接口中所有的抽象方法后,子类才可以实例化。否则子类是一个抽象类。

接口的多实现

怎么解决多继承的弊端呢?

弊端:多继承时,当多个父类中有相同功能时,子类调用会产生不确定性。

其实核心原因就是在于多继承父类中功能有主体,而导致调用运行时,不确定运行哪个主体内容。

为什么多实现能解决了呢?

因为接口中的功能都没有方法体,由子类来明确。

类继承类同时实现接口        多继承

接口的出现避免了单继承的局限性。父类中定义的事物的基本功能。接口中定义的事物的扩展功能。

优点

1、接口的出现扩展了功能。

2、接口其实就是暴漏出来的规则。

3、接口的出现降低了耦合性,即设备与设备之间实现了解耦。

接口的出现方便后期使用和维护,一方是在使用接口(如电脑),一方在实现接口(插在插口上的设备)。例如:笔记本使用这个规则(接口),电脑外围设备实现这个规则(接口)

接口和抽象的区别

相同点:

l  都位于继承的顶端,用于被其他类实现或继承;

l  都不能直接实例化对象;

l  都可以包含抽象方法,其子类都必须覆写这些抽象方法;

区别:

l  抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性;接口只能包含抽象方法;

l  一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)

l  抽象类是这个事物中应该具备的内容, 继承体系是一种 is..a关系

l  接口是这个事物中的额外内容,继承体系是一种 like..a关系

二者的选用:

l  优先选用接口,尽量少用抽象类;

l  需要定义子类的行为,又要为子类提供共性功能时才选用抽象类;

原文地址:https://www.cnblogs.com/1997WY/p/10430336.html

时间: 2024-10-03 06:50:20

java继承-------接口的相关文章

JAVA继承、多态与接口

一.继承1.继承的优点 代码的重用性 子类可以扩展父类的属性和方法 设计应用程序变得更加简单 父类的属性和方法可用于子类2.如何判断类具有继承关系 类和类的关系 1)has-a(组合) 2)is-a(继承)3.单继承和多继承 单根性: 在java中,一个类只能有一个父类 传递性: 子类可以将父类的属性和方法传递给自己的子类4.所有类的根类都是Object(超类,基类)5.方法重写(以后多态的使用要用到)@Override//注解 1)子类的方法的返回值类型.方法名和形式参数列表, 必须和父类中的

【Java面试题】60 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?

接口可以继承接口.抽象类可以实现(implements)接口,抽象类可以继承具体类.抽象类中可以有静态的main方法. 问:  抽象类是否可继承实体类 (concrete class) 答: 抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数. 答案很明确,可以继承.其实从Object就是个实体类,Java的API文档里,每个抽象类的条目里都明确写着直接或间接继承自Object,所以这点是没有疑问的. 关键在于这答案里所说的"前提是实体类必须有明确的构造函数"一句,是什么意思.

毕向东Java视频学习笔记【Day09 继承+接口+抽象类】

Java_Day09 继承+接口+抽象类 构造函数 子父类中的构造函数特点. 在子类构造对象时,发现访问子类构造函数时,父类也运行了. 为什么呢? 因为:在子类的构造函数中第一行有一个默认的隐式语句 super() 子类的实例化过程:子类中所有的构造函数默认都会访问父类中的空参构造函数. 在每个子类构造函数中,都有一个隐式的super()调用父类空参构造函数. 如果想输出22行内容,必须在29行改为super(5),这样可以访问到父类带参数的构造函数. 为什么子类实例化的时候会访问到父类的构造函

java 继承类与接口问题

java 先extends 继承类,再implements 继承接口 1 public class DataBase extends ClassBase implements Ijiekou { 2 3 }// end

Java中接口是否可以继承多个接口?

可以. 接口是常量值和方法定义的集合.接口是一种特殊的抽象类. java类是单继承的.classB Extends classA java接口可以多继承.Interface3 Extends Interface0, Interface1, interface…… 不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A如何决定该继承那一个呢? 但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口. 注意: 1)一个类如果实现了一个接口,则要实

day24 继承 接口 多态

抽象类与接口类 接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继承接口类,并且实现接口中的功能 class Alipay: ''' 支付宝支付 ''' def pay(self,money): print('支付宝支付了%s元'%money) class Applepay: ''' apple pay支付 ''' def pay(

Java 利接口来实现多态的情况, 和利用接口实现多重继承!

其中是利用, 正方形, 长方形, 圆形:来继承接口All 接口, 来实现All的情况. 少说废话,上代码: import java.util.*; interface S { void s(); } interface C { void c(); } interface All extends S,C { //这是实现接口的多重的继承 } class Square implements All { private double length = 1; public void s(){ Syste

java继承涉及的动/静态绑定及隐藏

项目中经常会用到java多态这个特性,之前只知道一些皮毛,现在发现自己对它并没有一个系统的认识,想从新梳理下自己的基础库. 看了java编程思想中对象导论,关于继承的描述:java中的类型不仅仅只是描述了作用于一个对象集合上的约束条件,同时还有与其他类型的之间的关系.可以创建一个基类来表示系统中某些对象的核心概念,从基类的基础上导出其他的类型,用以表示此核心可以被实现的不同方式.因此我们知道了类与类之间还有继承的关系. 问题:那什么是多态呢?多态跟继承有什么关系? 假设我编写了一个基类,它有多个

java中接口的定义与实现

1.定义接口 使用interface来定义一个接口.接口定义同类的定义类似,也是分为接口的声明和接口体,当中接口体由常量定义和方法定义两部分组成.定义接口的基本格式例如以下: [修饰符] interface 接口名 [extends 父接口名列表]{ [public] [static] [final] 常量; [public] [abstract] 方法; } 修饰符:可选,用于指定接口的訪问权限,可选值为public.假设省略则使用默认的訪问权限. 接口名:必选參数,用于指定接口的名称,接口名