4.接口

测试类:

 

package cn.jbit.test;

import cn.jbit.homeletter.HomeLetter;
import cn.jbit.homeletter.HomeLetterWriter;
import cn.jbit.homeletter.impl.HomeLetterImpl;

/**
 * 测试类
 * 
 * @author kyaccp
 * 
 */
public class HomeLetterTest {
	/**
	 * 程序的入口
	 * 
	 * @param args
	 *            输入参数
	 */
	public static void main(String[] args) {
		// 创建一个实现家书对象
		HomeLetter letter = new HomeLetterImpl();
		// 调用按照约定格式书写方法
		HomeLetterWriter.write(letter);

	}
}

 

接口类:

 

package cn.jbit.homeletter;

/**
 * 家书接口
 * 
 * @author kyaccp
 * 
 */
public interface HomeLetter {
	/**
	 * 书写称谓
	 */
	public void writeTitle();

	/**
	 * 书写问候
	 */
	public void writeHello();

	/**
	 * 书写内容
	 */
	public void writeBody();

	/**
	 * 书写祝福
	 */
	public void writeGreeting();

	/**
	 * 书写落款
	 */
	public void writeSelf();

}

 

package cn.jbit.homeletter;

/**
 * 家书写手
 * 
 * @author kyaccp
 * 
 */
public class HomeLetterWriter {
	/**
	 * 按照约定格式书写家书
	 * 
	 * @param letter
	 */
	public static void write(HomeLetter letter) {
		letter.writeTitle(); // 书写称谓
		letter.writeHello(); // 书写问候
		letter.writeBody(); // 书写内容
		letter.writeGreeting(); // 书写祝福
		letter.writeSelf(); // 书写落款
	}
}

 

 

实现类:

 

package cn.jbit.homeletter.impl;

import java.text.SimpleDateFormat;
import java.util.Date;

import cn.jbit.homeletter.HomeLetter;

/**
 * 实现家书接口
 * 
 * @author kyaccp
 * 
 */

public class HomeLetterImpl implements HomeLetter {

	/**
	 * 书写称谓
	 */
	public void writeTitle() {
		System.out.println("亲爱的爸爸、妈妈:");
	}

	/**
	 * 书写问候
	 */
	public void writeHello() {
		System.out.println("          你们好吗?\n");
	}

	/**
	 * 书写内容
	 */
	public void writeBody() {
		System.out.println("          我在这里挺好的。");
		System.out.println("          您二老保重身体啊!");
	}

	/**
	 * 书写祝福
	 */
	public void writeGreeting() {
		System.out.println("          此致\n敬礼");
	}

	/**
	 * 书写落款
	 */
	public void writeSelf() {
		String date = new SimpleDateFormat("yyyy年MM月dd日").format(new Date());
		System.out.println("\t\t小明\n\t" + date);

	}

}

 



 

 

接口基础知识
[修饰符] interface 接口名 extends 父接口1,父接口2,……{
    常量定义
    方法定义
}
class 类名 extends 父类名 implements 接口1,接口2,……{
    类的内容
}

说明如下。

接口和类、抽象类是一个层次的概念,命名规则相同。如果修饰符是public,则该接口在整个项目中可见。如果省略修饰符,则该接口只在当前包可见。

接口中可以定义常量,不能定义变量。接口中属性都自动用public static final修饰,即接口中属性都是全局静态常量。接口中的常量必须在定义时指定初始值。
public static final int PI=3.14;
int PI=3.14;    //在接口中,这两个定义语句效果完全相同
int PI;            //错误 !在接口中必须指定初始值,在类中会有默认值

接口中所有方法都是抽象方法。接口中方法都会自动用public abstract修饰,即接口中只有全局抽象方法。

和抽象类一样,接口同样不能实例化,接口中不能有构造方法。

接口之间可以通过extends实现继承关系,一个接口可以继承多个接口,但接口不能继承类。

一个类只能有一个直接父类,但可以通过implements实现多个接口。类必须实现接口的全部方法,否则必须定义为抽象类。类在继承父类的同时又实现了多个接口时,extends必须位于implements之前。

接口中属性都是全局静态常量,接口中方法都是全局抽象方法,接口中没有构造方法。

类只能继承一个父类,但可以实现多个接口。一个类要实现接口的全部方法,否则必须定义为抽象类。Java通过实现接口达到了多重继承的效果。

接口表示一种约定,接口表示一种能力,接口体现了约定和实现相分离的原则。

通过面向接口编程,可以降低代码间的耦合度,提高代码的可扩展性和可维护性。

面向接口编程意味着:开发系统时,主体构架使用接口,接口构成系统的骨架,这样就可以通过更换实现接口的类来更换系统的实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值