最近在学习java,在抽象类和接口上有这样一个示例。
代码如下:
下面展示一些 内联代码片
。
package TaskFive;
//打印机抽象类
//抽象类中的抽象方法,方法的具体实现由子类确定
abstract class Printer {
abstract void pri(String s);//打印
abstract void copier(String s);//复印
}
//声明接口
//实现 提示收费语句 的功能
interface charge {
//必须初始化,静态不可修改
public static final int page = 1;
default void Tip() {
System.out.println("一次打印" + page + "页");
}
void get_money();
}
//黑白打印机
class Black_white extends Printer implements charge {
void pri(String s) {
System.out.println("可以打印黑白的" + s);
}
void copier(String s) {
System.out.println("可以复印黑白的" + s);
}
public void get_money(){
System.out.println("一次0.1元.");
}
}
//彩色打印机
class Color extends Printer{
void pri(String s) {
System.out.println("可以打印彩色的" + s);
}
void copier(String s) {
System.out.println("可以复印彩色的" + s);
}
}
//使用人
class User {
Printer PRI;
void set(Printer P) {
PRI = P;
}
void use(String s) {
PRI.pri(s);
PRI.copier(s);
}
}
public class Test1 {
public static void main(String[] args) {
/*Printer p = new Printer(); 会报错,原因:抽象类不能实例化*/
/*charge Cha = new charge(); 会报错,原因:接口不能实例化*/
//彩色打印机
Printer p = new Color();//定义上转型对象
User Andy = new User();
Andy.set(p);
Andy.use("Hello,world!");
//黑白打印机(有收费功能提示)
charge Cha;
p = new Black_white();
Cha = (charge) p;
Cha.Tip();
Cha.get_money();
Andy.set(p);
Andy.use("Good!");
}
}
如有不足,请大家指点,谢谢。