教材學習內容總結
- 接口的接口体只可以有常量和abstract的方法。
- 和类一样,接口也是Java中一种重要的引用型数据类型,接口变量中只能存放实现该接口的类的实例的引用
- 当接口变量中存放了实现接口的类的对象引用后,接口变量就可以调用类实现的接口方法,这一过程称为接口回调。
- 和子类体现多态类似,有接口产生的多态就是指不同的类在实现同一个接口时可能具有不同的实现方式
- 在使用多态设计程序时,要熟练使用接口回调技术以及面向接口编程的思想,以便体现程序设计所提倡的“开-闭原则”。
代碼調試過程
例子1
package tom.jiafei;
public class Example {
public static void main(String[] args) {
China zhang;
Japan henlu;
zhang=new China();
henlu=new Japan();
zhang.number=32+Computable.MAX;
henlu.number=14+Computable.MAX;
System.out.println("zhang的學號"+zhang.number+",zhang求和結果"+zhang.f(100));
System.out.println("henlu的學號"+henlu.number+",henlu求和結果"+henlu.f(100));
}
}
interface Computable{
int MAX=46;
int f(int x);
}
class China implements Computable{
int number;
public int f(int x) {
int sum=0;
for(int i=1;i<=x;i++) {
sum=sum+i;
}
return sum;
}
}
class Japan implements Computable{
int number;
public int f(int x) {
return MAX+x;
}
}
例子2
package tom.jiafei;
public class Example {
public static void main(String[] args) {
Bus bus101=new Bus();
Taxi buletaxi=new Taxi();
Cinema redStarCinema=new Cinema();
MoneyFare fare;
ControlTemperature temperature;
fare=bus101;
bus101.brake();
fare.charge();
fare=buletaxi;
temperature=buletaxi;
buletaxi.brake();
fare.charge();
temperature.controlAirTemperature();
fare=redStarCinema;
temperature=redStarCinema;
fare.charge();
temperature.controlAirTemperature();
}
}
abstract class MotorVehicles{
abstract void brake();
}
interface MoneyFare{
void charge();
}
interface ControlTemperature{
void controlAirTemperature();
}
class Bus extends MotorVehicles implements MoneyFare{
void brake() {
System.out.println("公共汽車使用彀式刹車技術");
}
public void charge() {
System.out.println("公共汽車:一元/張,不計算公里數");
}
}
class Taxi extends MotorVehicles implements MoneyFare,
ControlTemperature{
void brake() {
System.out.println("計程車使用盤式刹車技術");
}
public void charge() {
System.out.println("計程車:2元/公里,起價3公里");
}
public void controlAirTemperature() {
System.out.println("計程車安裝Hair空調");
}
}
class Cinema implements MoneyFare,ControlTemperature{
public void charge() {
System.out.println("電影院:門票,十元/張");
}
public void controlAirTemperature() {
System.out.println("電影院安裝了中央空調");
}
}
例子3
package tom.jiafei;
public class Example {
public static void main(String[] args) {
AdvertisementBoard board=new AdvertisementBoard();
board.show(new BlackLandCorp());
board.show(new WhiteCloudCorp());
}
}
interface Advertisement{
public void showAdvertisement();
public String getCorpName();
}
class AdvertisementBoard{
public void show(Advertisement adver) {
System.out.println(adver.getCorpName()+"的广告词如下");
adver.showAdvertisement();
}
}
class WhiteCloudCorp implements Advertisement{
public void showAdvertisement() {
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
System.out.printf("飞机中的战斗机, 哎yes!\n");
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
}
public String getCorpName() {
return "白云有限公司";
}
}
class BlackLandCorp implements Advertisement{
public void showAdvertisement() {
System.out.println("***********************");
System.out.printf("劳动是爹\n土地是妈\n");
System.out.println("***********************");
}
public String getCorpName() {
return"黑土集团";
}
}
其他(感悟)
Java需要不断的去实操,发现其中的应用,并且准确理解代码的意义以及如何写出代码。
參考資料
《Java 2實用教程》第五版
CSDN編程社交網站