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();
}
}