Java的抽象类和接口示例

zz/2024/6/13 21:40:49

最近在学习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!");}}

如有不足,请大家指点,谢谢。


http://www.ngui.cc/zz/2732113.html

相关文章

Servlet补充学习——《JSP Web开发应用》

Servlet是java服务器端的小程序,是Java环境下实现动态网页的基本技术。Servlet程序能够调用Javabean、JDBC、其他servlet、RML等程序完成指定的功能。在应用中servlet起到了中间层的作用,将客户端和后台的资源隔离开来。 servlet有支持servlet的服务器&a…

Python的For+While循环的课堂练习(附上文连接)

>> Python每日笔记—Day04 << # 课堂小作业1-Star&#xff1a; # 通过while循环嵌套 实现如下图形 # ****...*** # * * # * * # * * # ****...***row int(input("请输入行数")) col int(input("请输入列数")) i 0 j…

Python使用Tkiner进行MD5加密

MD5加密 from tkinter import * import hashlib import timeLOG_LINE_NUM 0 # 日志信息内容class mu_gui():def __init__(self, init_window_name):self.init_window_name init_window_name# 窗口布局的方法def set_init_window(self):self.init_window_name.titleMD5加密…

Python每日笔记13(线程)

本次内容&#xff1a;线程 >> Python每日笔记—目录 << 线程 多线程的使用 Thread() group:线程组&#xff0c;目前只能使用None target:执行的目标任务名 *args:以元组的方式给执行任务进行传参 **kwargs:以字典的方式进行传参 name:线程名称&#xff0c;一般…

爬虫网络库(5.requests网络库)

这里写目录标题 Request网络库介绍5.1 request使用案例15.2 get方法5.3 设置请求头headers5.4 get_binary方法5.5 使用post方法发送post请求5.6 response请求响应结果5.7 uploadfile上传文件5.8 设置Cookie5.9 使用Session对象5.10 SSL签名证书5.11 proxy设置HTTP/HTTPS的代理5…

vue中虚拟DOM到真实DOM大概转化过程

let vnode {tagname: div,attrs: {id: 1,class: active},content: hello } // 虚拟DOM到真实DOM的大概转换过程 let div document.createElement(vnode.tagname) for (let key in vnode.attrs) {div.setAttribute(key, vnode.attrs[key]) } div.innerHMTL vnode.content

SQLAlchemy连接MySQL数据库的方法

代码如下&#xff1a; 在create_engine中输入的是一个连接字符串。在使用python的SQLAlchemy时&#xff0c;连接字符串的格式如下&#xff1a; 数据库产品名连接工具名&#xff1a;//用户名&#xff1a;密码数据库IP地址&#xff1a;数据库端口号/数据库名称&#xff1f;chars…

springBoot使用druid数据库连接池以及logback,并开启慢sql记录输出到指定的日志文件

该文主要记录下自己使用过程&#xff0c;以后用到可以看看&#xff0c;我的springBoot版本是2.2.1&#xff0c;2以上应该都没问题 1.首先添加好需要的依赖包&#xff1a; <!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-…

重温经典:Windows1.0系统体验和尝试自己编写Windows1.0系统

相关说明 如果你觉得文章含有侵权部分,可以联系CSDN私聊,我会适当修改。 未经允许,不得转载,如需转载,请CSDN私聊。 Windows Windows,意思是窗口,窗户。当然,他也是一个操作系统的名字。 1983年,由比尔盖茨建立的Microsoft,也就是微软公司,开始研制Windows操作系统…

读书笔记_mysql必知必会_27_全球化和本地化

目录 字符集和校对顺序 使用字符集和校对顺序 字符集和校对顺序 数据库表被用来存储和检索数据。不同的语言和字符集需要以不同的方式存储和检索。因此&#xff0c;MySQL 需要适应不同的字符集&#xff08;不同的字母和字符&#xff09;&#xff0c;适应不同的排序和检索数据…