1.接口
1.1接口概述
接口就是一种公共的规范标准,只要符合标准,大家都可以通用
Java中的接口更多的体现在对行为的抽象
1.2接口的特点
- 接口用关键字interface修饰,格式:public interface 接口名{}
- 类实现接口用implements表示,格式:public class 类名 implements 接口名{}
- 接口不能实例化,接口实例化可以参照多态的方式,通过实现类对象来进行实例化,这也叫做接口多态。
- 接口的实现类要么重写接口中的所有抽象方法,要么是抽象类
多态的形式:
- 具体类多态
- 抽象类多态
- 接口多态
多态的前提:有继承关系或者实现关系;有方法重写;有父类引用指向子类对象或者父接口引用指向子实现类对象。
接口:
package com.itheima_02;
//定义了一个接口
//接口用关键字interface修饰,格式:public interface 接口名{}
public interface Jumpping {
public abstract void jump();
}
实现类1:
package com.itheima_02;
//类实现接口用implements表示,格式:public class 类名 implements 接口名{}
public class Cat implements Jumpping {
@Override
public void jump() {
System.out.println("猫跳高");
}
}
实现类2:
package com.itheima_02;
public abstract class Dog implements Jumpping {
//接口的实现类要么重写接口中的所有抽象方法,要么是抽象类
}
测试类:
package com.itheima_02;
public class JumppingDemo {
public static void main(String[] args) {
//接口不能实例化,接口实例化可以参照多态的方式,通过实现类对象来进行实例化,这也叫做接口多态。
// Jumpping j = new Jumpping(); 错误
Jumpping j = new Cat(); //采用多态的形式
j.jump();
}
}
1.3接口的成员特点
- 成员变量:(只能是常量,默认用修饰符public static final进行修饰)
- 构造方法:(接口中没有构造方法,因为接口主要是对行为的抽象,是没有具有存在的,一个类如果没有父类,默认继承自Object类)
- 成员方法:只能是成员方法,默认用public abstract修饰
接口:
package com.itheima_03;
//接口
public interface Inter {
/*
/成员变量:(只能是常量,默认用修饰符public static final进行修饰)
所以int num = 10;和public final int num = 10;是一样的
*/
public int num1 = 10;
public final int num2 = 20;
//public Inter(){} 报错:接口中没有构造方法,因为接口主要是对行为的抽象,是没有具有存在的
//public void show(){} 报错:因为接口中的成员方法只能是抽象方法,默认用public abstract修饰
}
实现类:
package com.itheima_03;
public class InterImpl implements Inter {
/*
接口中没有构造方法,因为接口主要是对行为的抽象,是没有具有存在的,一个类如果没有父类,默认继承自Object类
Object类是所有类的根,所有的类都直接或者间接的继承自Object类
public class InterImpl implements Inter其实是public class InterImpl extends Object implements Inter的省略写法
/
*/
}
1.4类和接口的关系
- 类和类的关系:继承关系,只能单继承,但是可以多层继承
- 类和接口的关系:实现关系,可以单实现也可以多实现,还可以在继承一个类的同时实现多个接口
- 接口和接口的关系:继承关系,可以单继承也可以多继承
1.5抽象类和接口的区别
1.成员区别
抽象类 变量,常量;有构造方法;有抽象方法也有非抽象方法
接口 常量;抽象方法
2.关系区别
类与类 继承,单继承
类与接口 实现,单实现和多实现
接口与接口 继承,单继承和多继承
3.设计理念区别
抽象类 是对事物进行抽象,包括属性和行为
接口 对行为抽象,主要是行为