文章目录
- 1. 接口概述
- 2. 接口特点
- 3. 接口成员特点
- 4. 小案例应用
- 5. 类和接口的关系
- 6. 抽象类和接口区别
1. 接口概述
1. 接口是一种公共的规范标准,只要符合规范标准,大家都可以通用。Java中的接口更多的是体现在对行为的抽象。
2. 参考生活中的接口可以理解,比如下图:
2. 接口特点
1. 接口用关键字interface
修饰:public interface 接口名{}
。
2. 类实现接口用implements
表示:public class 类名 implements 接口名{}
。
3. 接口不能实例化。要参照多态的形式,通过实现类对象实例化,这叫接口多态。
4. 接口的实现类:要么重写接口中的所有抽象方法,要么是抽象类。
public interface Inter {
public abstract void jump();
}
public class Cat implements Inter {
@Override
public void jump() {
System.out.println("猫可以跳高了");
}
}
public class Demo {
public static void main(String[] args) {
Inter j=new Cat();
j.jump(); //输出:猫可以跳高了
}
}
3. 接口成员特点
1. 成员变量:只能是常量。默认修饰符:public final
。所以可以不写。
2. 构造方法:接口没有构造方法,因为接口主要是对行为抽象的。一个类如果没有父类,默认继承Objiect
。
3. 抽象方法:只能是抽象方法。默认修饰符:public abstract
。所以可以不写。
public interface Inter {
public int age=10;
public final int age2=20;
int age3=30;
}
public class InterImple implements Inter {}
public class Demo {
public static void main(String[] args) {
Inter j = new InterImple();
//j.age=30; 会报错
System.out.println(j.age); //输出:10
System.out.println(j.age2); //20
System.out.println(j.age3); //30
//直接接口.成员,也可以
System.out.println(Inter.age3);//30
}
}
4. 小案例应用
public abstract class Animal {
private int age;
private String name;
public Animal(){}
public Animal(String name,int age) {
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract void eat();
}
public interface Inter {
public abstract void jump();
}
public class Cat extends Animal implements Inter{
public Cat(){}
public Cat(String name,int age){
super(name,age);
}
@Override
public void eat() {
System.out.println("猫吃鱼");
}
@Override
public void jump() {
System.out.println("猫可以跳高");
}
}
public class Demo {
public static void main(String[] args) {
Inter i=new Cat();
i.jump(); //猫可以跳高
Animal a=new Cat("加菲猫",5);
System.out.println(a.getName()+" "+a.getAge()+"岁"); //加菲猫 5岁
a.eat(); //猫吃鱼
}
}
5. 类和接口的关系
1. 类和类的关系:继承关系,只能单继承,但是可以多层继承。
2. 类和接口的关系:实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。
3. 继承关系:可以单继承,也可以多继承。
public interface Inter1 {
}
public interface Inter2 {
}
public interface Inter3 extends Inter1,Inter2{
}
public class lei extends Object implements Inter1,Inter2,Inter3{
}
6. 抽象类和接口区别
1. 成员区别:(1) 抽象类:变量,常量;有构造方法;有抽象方法,也有非抽象方法。 (2) 接口:常量,抽象方法。
2. 关系区别:(1) 类与类:继承和单继承。 (2) 类与接口:实现,可以单实现也可以多实现。 (3) 接口与接口:继承,可以单继承也可以多继承。
3. 如下面这个门的例子。再次强调:抽象类是对事物的抽象,而接口是对行为的抽象。