接口:
初期理解,可以认为是一个特殊的抽象类。当抽象类中的方法都是抽象类,那么该类可以通过接口的形式来实现。
接口是不可以创建对象的,因为存在抽象方法。需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化,否则子类是一个抽象类。
- 接口定义格式特点:
①接口中常见的定义:常量、抽象方法。
②接口中的成员(都是public)都有固定修饰符(JVM默认存在修饰符):
常量:public static final
方法:public abstract
③类可以继承一个类的同时可以实现多个接口。
代码示例 1
/*
需求:获取一段程序运行的时间。
原理:获取程序开始和结束的时间并相减即可。
获取时间:System.currentTimeMillis();
模板方法:在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,
那么这时就将不确定的部分暴露出去,由该子类去完成。
*/
abstract class GetTime{
public final void getTime(){
long start=System.currentTimeMillis();
runcode();
long end=System.currentTimeMillis();
System.out.println("毫秒:"+(end-start));
}
public abstract void runcode();
}
class SubTime extends GetTime{
public void runcode(){
//测试代码
for(int x=1;x<=1000;x++)
System.out.println(x);
System.out.println();
}
}
class template{
public static void main(String[] args){
SubTime gt=new SubTime();
gt.getTime();
}
}
代码示例 2
/*
假如我们在开发一个系统时需要对员工进行建模,员工包含三个属性:姓名、工号以及工资。
经理也是员工,除了含有员工的属性外,另外还有一个奖金属性。
请使用继承的思想设计出员工类和经理类。
要求类中提供必要的方法进行属性访问。
*/
abstract class Employee{
private String name;
private String id;
private double pay;
Employee(String name,String id,double pay){
this.name=name;
this.id=id;
this.pay=pay;
}
public abstract void work();
}
class Pro extends Employee{
Pro(String name, String id, double pay){
super(name, id, pay);
}
public void work(){
System.out.print("Pro Work");
}
}
class Manager extends Employee{
private int bonus;
Manager(String name,String id,double pay,int bonus){
super(name,id,pay);
this.bonus=bonus;
}
public void work(){
System.out.print("Manager Work");
}
}
class example {
public static void main(String[] args){
Pro p=new Pro("zhang","100",100);
p.work();
}
}