package com.neusoft.interfaces;
/**
* 接口:就是一种规范,只能有“常量”和“抽象方法”,是一种特殊的抽象类
* 在接口中定义的方法默认都是:public abstract
* 在接口中定义的常量默认都是:public static final
* 如何来实现A接口中所有没实现的方法:我们需要创建一个实现类------实现A接口
* 接口也是JAVA中的多态表现形式 A aImpl = new AImpl();
* 接口和抽象类都不能被实例化(new)
* 类只支持单继承而接口是支持多继承的 A extends B,C,D,E
* 一个类可以是实现一个或多个接口 public class AImpl implements A,B,C
* 一个类可以继承一个类/抽象类的同时去实现一个或多个接口 public class AImpl extends Animal implements A,B,C
* 使用接口的意义:
* 接口可以使方法的定义和实现相分离,降低模块间或系统间的耦合性
* 接口是比较灵活的,后期的框架的思想都是面向接口来编程的
*/
public interface A extends B,C {
/**
* 接口必须写注释
*/
// int Max = 10;
public void eat();
public void sleep();
public void jump();
}
package com.neusoft.interfaces;
public interface B {
/**
* 学习接口
*/
public void study();
}
package com.neusoft.interfaces;
public interface C {
/**
* 游戏接口
*/
public void play();
}
package com.neusoft.interfaces;
public abstract class Animal {
/**
* 抽象类
*/
public abstract void eat1();
}
package com.neusoft.interfaces;
/**
* 接口的实现
*/
public class AImpl extends Animal implements A,B,C {
@Override
public void eat() {
System.out.println("eat");
}
@Override
public void sleep() {
System.out.println("sleep");
}
@Override
public void jump() {
System.out.println("jump");
}
public static void main(String[] args) {
AImpl aImpl = new AImpl();
aImpl.eat();
aImpl.sleep();
aImpl.jump();
}
@Override
public void study() {
// TODO Auto-generated method stub
}
@Override
public void play() {
// TODO Auto-generated method stub
}
@Override
public void eat1() {
// TODO Auto-generated method stub
}
}
package com.neusoft.interfaces;
// 既继承又实现接口
public class AImpl extends Animal implements A, B, C {
@Override
public void eat() {
System.out.println("eat");
}
@Override
public void sleep() {
System.out.println("sleep");
}
@Override
public void jump() {
System.out.println("jump");
}
@Override
public void study() {
// TODO Auto-generated method stub
}
@Override
public void play() {
// TODO Auto-generated method stub
}
@Override
public void eat1() {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
AImpl aImpl = new AImpl();
aImpl.eat();
aImpl.sleep();
aImpl.jump();
}
}