接口的特点
- 接口用关键字interface修饰
public interface 接口名{}
- 类实现接口用implements表示
public class 类名 implements 接口名{}
- 接口不能实例化
接口只能通过类对象实例化,这叫接口多态
- 接口的实现类
要么重写接口中的所有抽象方法
要么是抽象类
简单接口
接口
package heima;
public interface Jumpping {
public abstract void jump();
}
主函数
package heima;
public class JumppingDemo {
public static void main(String[] args) {
// Jumpping j=new Jumpping() ;接口不能实例化
Jumpping j=new Cat();//运用多态进行实例化
j.jump();
}
}
继承接口的子类
package heima;
public class Cat implements Jumpping{
@Override
public void jump(){
System.out.println("猫可以跳高");
}
}
接口的实现与方法的调用
package lkj;
interface Animal {
int ID=1;
void breathe();
default void getType(String type){
System.out.println("该动物属于:"+type);
}
static int getID(){
return Animal.ID;
}
}
package lkj;
class kkk {
public static void main(String[] args) {
System.out.println(Animal.getID());
Dog dog=new Dog();
System.out.println(dog.ID);
dog.breathe();
dog.getType("犬科");
}
}
package lkj;
class Dog implements Animal{
@Override
public void breathe() {
System.out.println("狗在呼吸");
}
}
接口的成员特点
package heima;
public interface Inter {
public int num=10;
public final int num2=20;
public static final int num3=30;
//接口中默认修饰符
//等价于int num3=30;
//public Inter(){}接口没有构造方法只有成员方法
//public Inter(){}
//public void show(){}接口里面不能有非抽象方法
public abstract void method();
void show();//默认存在public abstract
}
package heima;
public class InterfaceDemo {
public static void main(String[] args) {
Inter i=new InterImpl();//利用多态创建接口
//i.num=20;接口中的值默认被final修饰,所以接口中没有成员变量
System.out.println(i.num);
//i.num2=40;被final修饰不能重新赋值
System.out.println(i.num2);
System.out.println(Inter.num);//可以通过接口名直接访问说明他是被静态修饰
i.method();
i.show();
}
}
package heima;
public class InterImpl extends Object implements Inter{
/*public InterImpl(){
super();调用的不是接口而是Object类
}*/
@Override
public void method(){
System.out.println("method");
}
public void show(){
System.out.println("show");
}
}
接口
案例:猫和狗
package heima;
public interface Jumpping {
public abstract void jump();
}
package heima;
public class AnimalDemo {
public static void main(String[] args) {
Jumpping j=new Cat();
j.jump();
System.out.println("------------");
Animal a=new Cat();
a.setName("加菲");
a.setAge(5);
System.out.println(a.getName()+","+a.getAge());
a.eat();
((Cat)a).jump();//Animal中没有jump
a=new Cat("加菲",5);
System.out.println(a.getName()+","+a.getAge());
a.eat();
System.out.println("--------");
Cat c=new Cat();
c.setName("加菲");
c.setAge(5);
System.out.println(c.getName()+","+c.getAge());
c.eat();
c.jump();
}
}
package heima;
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 abstract void eat();
}
package heima;
public class Cat extends Animal implements Jumpping{
public void eat(){
System.out.println("猫吃鱼");
}
public void jump(){
System.out.println("猫可以跳高了");
}
public Cat() {
}
public Cat(String name, int age) {
super(name, age);
}
}