java 8-7 接口

1、 接口的特点:
A:接口用关键字interface表示
interface 接口名 {}
B:类实现接口用implements表示
class 类名 implements 接口名 {}
C:接口不能实例化
那么,接口如何实例化呢?
按照多态的方式来实例化。
D:接口的子类
a:可以是抽象类。但是意义不大。
b:可以是具体类。要重写接口中的所有抽象方法。(推荐方案)

由此可见:
A:具体类多态(几乎没有)
B:抽象类多态(常用)
C:接口多态(最常用)

 1 //定义动物培训接口
 2 interface AnimalTrain {
 3 public abstract void jump();
 4 }
 5
 6 //抽象类实现接口
 7 abstract class Dog implements AnimalTrain {
 8 }
 9
10 //具体类实现接口
11 class Cat implements AnimalTrain {
12 public void jump() {
13 System.out.println("猫可以跳高了");
14 }
15 }
16
17 class InterfaceDemo {
18 public static void main(String[] args) {
19 //AnimalTrain是抽象的; 无法实例化
20 //AnimalTrain at = new AnimalTrain();
21 //at.jump();
22
23 AnimalTrain at = new Cat();
24 at.jump();
25 }
26 }

2、 接口成员特点
成员变量;只能是常量,并且是静态的。最终量,不能重写
默认修饰符: public static final
建议:自己手动给出。
构造方法:接口没有构造方法。
成员方法:只能是抽象方法。
默认修饰符: public abstract
建议:自己手动给出。

所有的类都默认继承自一个类:Object。
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。

 1 interface Inter {
 2 public int num = 10;
 3 public final int num2 = 20;
 4 public static final int num3 = 30;
 5
 6 //错误: 需要<标识符>
 7 //public Inter() {}
 8
 9 //接口方法不能带有主体
10 //public void show() {}
11
12 //abstract void show(); //默认public
13 public void show(); //默认abstract
14 }
15
16 //接口名+Impl这种格式是接口的实现类格式
17 /*
18 class InterImpl implements Inter {
19 public InterImpl() {
20 super();
21 }
22 }
23 */
24
25 class InterImpl extends Object implements Inter {
26 public InterImpl() {
27 super();
28 }
29
30 public void show() {}
31 }
32
33 //测试类
34 class InterfaceDemo2 {
35 public static void main(String[] args) {
36 //创建对象
37 Inter i = new InterImpl();
38 System.out.println(i.num);
39 System.out.println(i.num2);
40 //i.num = 100;
41 //i.num2 = 200;
42 //System.out.println(i.num); //无法为最终变量num分配值
43 //System.out.println(i.num2);//无法为最终变量num2分配值
44 System.out.println(Inter.num);
45 System.out.println(Inter.num2);
46 System.out.println("--------------");
47 }
48 }

3、 类与类:
继承关系,只能单继承,可以多层继承。
类与接口:
实现关系,可以单实现,也可以多实现。
并且还可以在继承一个类的同时实现多个接口。
接口与接口:
继承关系,可以单继承,也可以多继承。

 1 interface Father {
 2 public abstract void show();
 3 }
 4
 5 interface Mother {
 6 public abstract void show2();
 7 }
 8
 9 interface Sister extends Father,Mother { //接口跟接口可以是多继承关系
10
11 }
12
13 //class Son implements Father,Mother //类和接口是多继承,多实现
14 class Son extends Object implements Father,Mother {
15 public void show() {
16 System.out.println("show son");
17 }
18
19 public void show2() {
20 System.out.println("show2 son");
21 }
22 }
23
24 class InterfaceDemo3 {
25 public static void main(String[] args) {
26 //创建对象
27 Father f = new Son();
28 f.show();
29 //f.show2(); //报错
30
31 Mother m = new Son();
32 //m.show(); //报错
33 m.show2();
34 }
35 }

4、 抽象类和接口的区别:
A:成员区别
抽象类:
成员变量:可以变量,也可以常量
构造方法:有
成员方法:可以抽象,也可以非抽象
接口:
成员变量:只可以常量
成员方法:只可以抽象

B:关系区别
类与类
继承,单继承
类与接口
实现,单实现,多实现
接口与接口
继承,单继承,多继承

C:设计理念区别
抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。
接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。

时间: 2024-12-14 08:29:47

java 8-7 接口的相关文章

JavaSE入门学习21:Java面向对象之接口(interface)(二)

一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.java源文件代码: public class Test{ public static void main(String[] args){ //实现接口Singer Singer s1 = new Student("Amy"); s1.sing(); s1.sleep(); s1.study

java的List接口的实现类 ArrayList,LinkedList,Vector 的区别

Java的List接口有3个实现类,分别是ArrayList.LinkedList.Vector,他们用于存放多个元素,维护元素的次序,而且允许元素重复. 3个具体实现类的区别如下: 1. ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制.移动.代价比较高.因此,它

老白的JAVA课程13 接口

之前我们讲到了java4大特征的最后一个抽象的特征,其实在抽象这个特征里面,我们还有一个特征-接口,今天我们就来学一学接口.  用电脑,手机等电子产品来比喻接口,可以更好的理解,比如用符合接口的插头就可以了.  接口具有很好的扩展性,方便.  接口的由来   例子:奥拓奥迪都是汽车,汽车的维护都是可以用调节引擎和更换汽油的方法,那么奥拓和奥迪也都可以:但是有了更多的维护对象以后,比如说大货车,卡车等等,其他的对象不一定需要每一步维护,或者都不需要维护:又比如不同枪支有不同特性的例子.  因此,我

JDK1.8 java.io.Serializable接口详解

java.io.Serializable接口是一个标志性接口,在接口内部没有定义任何属性与方法.只是用于标识此接口的实现类可以被序列化与反序列化.但是它的奥秘并非像它表现的这样简单.现在从以下几个问题入手来考虑. 希望对象的某些属性不参与序列化应该怎么处理? 对象序列化之后,如果类的属性发生了增减那么反序列化时会有什么影响呢? 如果父类没有实现java.io.Serializable接口,子类实现了此接口,那么父类中的属性能被序列化吗? serialVersionUID属性是做什么用的?必须申明

java抽象类和接口

1.抽象类 抽象类在概念上描述的是抽象世界,抽象类刻画了公有行为的特征,并且通过继承机制传送给它的派生类.抽象类使用关键字abstract 修饰,语法如下: abstract class 类名{ 类体; } 抽象方法是指在抽象类中某些成员方法没有具体的实现,只有方法声明.抽象方法使用关键字abstract 修饰,格式如下: public abstract 返回类型 方法名([参数列表]); 抽象类和抽象方法的具体规则如下: 1.用abstract 关键字修饰一个类时,该类叫做抽象类,用abstr

java----数据结构与算法----JavaAPI:java.util.Collection接口

Java API--java.util.Collection接口 /** * @author chen * @date 20170317 * @description:本程序讲述Collection接口 * java.util.Collection * 概述:Collection接口是Set和List接口的父接口,Collection接口中定义了一些 * 用于集合元素操作的方法,被其子接口以及子接口的实现类所继承 * 构造函数 * java中接口不能有构造函数 * 成员函数: * [1]概述,由

java中set接口的用法

java中的set接口有如下的特点: 不允许出现重复元素: 集合中的元素位置无顺序: 有且只有一个值为null的元素. 因为java中的set接口模仿了数学上的set抽象,所以,对应的数学上set的特性为: 互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次. 无序性:一个集合中,每个元素的地位都是相同的,元素之间是无序的.集合上可以定义序关系,定义了序关系后,元素之间就可以按照序关系排序.但就集合本身的特性而言,元素之间没有必然的序. 空集的性质:空集是一切集合的子集 S

JAVA学习经验--总结JAVA抽象类和接口

* --总结JAVA抽象类和接口  * 1.抽象类:  *             1>抽象类可以修饰方法,修饰类,但不能修饰属性,不能被实例化  *             2>抽象类可以被继承,只能是单继承,继承抽象类必须实现抽象方法  *             3>抽象类不能被static ,fina,private一起修饰  *             4>抽象类是有多态性的  *  * 2.接口:  *             1>接口是一种特殊的抽象类,不能被实

JavaSE入门学习20:Java面向对象之接口(interface)

一Java接口 接口(英文:interface)是抽象方法和常量值的集合,在Java编程语言中是一个抽象类型,接口通常以interface来声 明.类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些 类里方法的实现细节,它只规定这些类里必须提供某些方法.一个类或接口通过继承接口的方式,从而来继承接口的 抽象方法. 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念.类描述对象的属性和方法.接口则包含 类要实现的方法.除非实现接口的类是抽

java类与接口练习

java类与接口练习--coursera java 课程作业 1.注意代码应该使用题目中所要求的语法要素:2.注意良好的代码风格:3.注意提交整个project,上传压缩后的附件,互评时可被成功执行:4.注意写一个简要的代码说明(请说明使用的IDE等): 编写一个小的程序,其中定义一些接口.类.抽象类,定义它们的成员(字段及方法), 要求使用setter/getter, static, final, abstract,@Override等语法要素,并写一个main函数来使用它们.这些类.接口可以