什么时候用抽象类?请举例说明 如题: 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 类似接口,只是抽象类中可以有普通属性,而接口中会默认为public static final;且抽象类中除了抽象方法还可以有实现方法 抽象类可以分担子类的功能,减轻子类的压力,这是Design Pattern里的Template Method Pattern。这样设计的好处是父类已经实现了算法,子类就不必逐一实现了例:public abstract class AbstractPrint { public abstract void start(); // 子类负责的实现(打印的内容) public abstract void end(); public abstract void print(); public final void printAll() { // 父类实现的逻辑(打印模板) start(); for (int i = 0; i < 5; i++) { print(); } end(); }}class PrintNumber extends AbstractPrint { int number = 0; public PrintNumber(int number) { this.number = number; } public void start() { System.out.print("["); } public void end() { System.out.println("]"); } public void print() { System.out.print(number); }}class PrintAlpha extends AbstractPrint { char alphabet; public PrintAlpha(char alphabet) { this.alphabet = alphabet; } public void start() { System.out.print("{"); } public void end() { System.out.println("}"); } public void print() { System.out.print(alphabet); }} 问下jar打包的新手问题解决马上给分结贴 熟悉java表格jTable的使用的帮帮忙看看怎么刷新。 excuse me 一个有关小问题 windows的磁盘空间统计!用java语言 jni中返回值为jdoubleArray的问题 初学者问题? 求救,看看这个程序那错了。。。 紧急求助:如何动态修改某个选中jTree节点的节点名称。 java的max和min的用法求教 int转换成byte的问题,求助各位大侠 [讨论]垃圾回收器机制--质疑Think in java
且抽象类中除了抽象方法还可以有实现方法
这样设计的好处是父类已经实现了算法,子类就不必逐一实现了
例:public abstract class AbstractPrint {
public abstract void start(); // 子类负责的实现(打印的内容)
public abstract void end();
public abstract void print();
public final void printAll() { // 父类实现的逻辑(打印模板)
start();
for (int i = 0; i < 5; i++) {
print();
}
end();
}
}class PrintNumber extends AbstractPrint {
int number = 0;
public PrintNumber(int number) {
this.number = number;
} public void start() {
System.out.print("[");
} public void end() {
System.out.println("]");
} public void print() {
System.out.print(number);
}
}class PrintAlpha extends AbstractPrint {
char alphabet;
public PrintAlpha(char alphabet) {
this.alphabet = alphabet;
} public void start() {
System.out.print("{");
} public void end() {
System.out.println("}");
} public void print() {
System.out.print(alphabet);
}
}