2020-06-21接口
2020-06-21 本文已影响0人
智障猿
接口
- 接口的特点
- 接口用关键字interface修饰:public interface 接口名{}
- 类实现接口用implements表示:public class 类名 implements 接口名{}
- 接口不能实例化:参照多态的方式,通过实现类对象实例化,叫做接口多态
- 接口的实现类
要么重写接口中所以抽象方法
要么是抽象类
- 接口的成员特点
- 成员变量
只能是静态常量
默认修饰符:public static final - 构造方法
接口没有构造方法,因为接口主要是对行为进行抽象。
一个类如果没有父类,默认继承自Object类。 - 成员方法
只能是抽象方法
默认修饰符:public abstract
接口实例
- 动物抽象父类
public abstract class Animal {
//成员变量
private String name;
private int age;
//构造方法
public Animal() {
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
//成员方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void eat(){
System.out.println("动物要吃饭!");
}
}
- 行为接口
public interface Jumping {
public abstract void jumpheight();
}
- Cat类
public class Cat extends Animal implements Jumping{
public Cat(String name, int age) {
super(name, age);
}
@Override
public void jumpheight() {
System.out.println("小猫经过训练,学会跳高!");
}
@Override
public void eat() {
System.out.println("猫吃鱼!");
}
}
- 测试类
public class AnimalDemo {
public static void main(String[] args) {
Animal animal = new Cat();
animal.setAge(18);
animal.setName("加菲猫");
System.out.println(animal.getName()+animal.getAge());
animal.eat();
//animal.jumpheight();报错因为父类中没有jumpheight方法
Jumping j = new Cat();
j.jumpheight();
//j.eat();报错因为接口中没有eat方法
Cat cat = new Cat();
cat.setName("波斯猫");
cat.setAge(18);
cat.eat();
cat.jumpheight();
}
}
类与接口的关系
- 类和类的关系
继承关系,只能单继承,但是可以多层继承 - 类和接口的关系
实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口 - 接口和接口的关系
继承关系,可以单继承,也可以多继承
抽象类和接口的区别
- 成员区别
抽象类:变量,常量,构造方法,抽象方法,非抽象方法
接口:静态常量,抽象方法 - 关系区别
类与类:继承,单继承
类与接口:实现,可以单实现也可以多实现
接口与接口:继承,单继承,多继承 - 设计理念区别
抽象类:对类抽象包括属性,行为
接口:对行为抽象,主要是行为