文章目录
- 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 {@Overridepublic 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); //输出:10System.out.println(j.age2); //20System.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);}@Overridepublic void eat() {System.out.println("猫吃鱼");}@Overridepublic 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. 如下面这个门的例子。再次强调:抽象类是对事物的抽象,而接口是对行为的抽象。