模版方法设计模式
抽象父类负责定义操作中的业务骨干,而把这些具体的实现步骤延迟到子类中去实现。
abstract class muban{
public long getTime(){
long start = System.currentTimeMillis();
doWork();
long end = System.currentTimeMillis();
return end - start;
}
abstract protected void doWork();
}
class DemoInt extends muban{
@Override
protected void doWork() {
long tonal = 0;
for(int i=1;i<=10000;i++){
tonal+=i;
}
}
}
class DemoStr extends muban{
@Override
protected void doWork() {
String str = "";
for(int i=1;i<=10000;i++){
str+=i;
}
}
}
public class MubanDemo {
public static void main(String[] args) {
System.out.println(new DemoInt().getTime());
System.out.println(new DemoStr().getTime());
}
}
接口
定义接口 usb规范
实现接口 usb键盘 usbU盘
实例 方正usb键盘 金仕顿usbU盘
成员变量
全局静态变量 public static final修饰 接口会被定义为常量类
公共静态内部类 public static修饰
公共的抽象方法 public abstract修饰
接口的特点:
1、没有构造方法,不能实例化
2、接口只能继承接口,接口可以多继承
3、接口的方法全部都是公共抽象方法 用public abstract修饰
4、接口的内部类全是静态内部累用 public static修饰
5、接口的变量,全部都是静态变量 用 public static final修饰
接口的多态以后很重要
内部类
就是在类中定义的类,就是因为封装
在开发中什么时候用到内部类
1:这个类只需要让当前的外部类访问
2:匿名内部类
四种内部类
非静态内部类
静态内部类
局部内部类
匿名内部类,只使用一次的类 重点
匿名内部类中只能使用final修饰的局部变量
枚举
JAVA5开始有了枚举,关键字 enum ,枚举中的常量是{}表示是内部类
enum week{
M,T,F,S,G,H;
}
//获取枚举类型所有的对象常量
week[] weeks = week,values();
//把一个字符串转换为枚举的常量对象
week day = week.valueOf("M");
//获取枚举的名称
String name = weeks.M.name();
//获取枚举的序列
int ordinal = week.M.ordinal();
java5开始switch也开始支持枚举
组合关系(代码复用的两种关系)
继承关系:属于“is a”的关系,子类是父类的一种特殊情况 代码复用,但是破坏封装
代码复用,组合关系,has a A类中包含代码复用的对象