Java基础7-异常;jar包
昨日内容回顾
- 多态:多种状态,多态的前提条件是继承或者是实现 
- 面向接口编程 - 降低耦合度
- 接口是最低标准,接口可以多重继承
- 接口中的所有方法都是抽象方法
- 抽象类中可以没有抽象方法
 
- 匿名内部类对象 - 将对类的继承,方法重写,对象的创建集成到一行代码中区。 
作业解析
- 使用接口进行如下程序设计 
 个人电脑(PC)具有PCI插槽,可以插入PCI卡。显卡、声卡、语音卡都可以作为PCI卡插入PCI插槽中
 PC,PCI,slot,VideoCard,SoundCard, VoiceCard- interface PCI{
 public void pci();
 } class VideoCard implements PCI{
 public void pci(){
 System.out.println("This is a videoCard");
 }
 } class SoundCard implements PCI{
 public void pci(){
 System.out.println("This is a soundCard");
 } class VoiceCard implements PCI{
 public void pci(){
 System.out.println("This is a voiceCard");
 } class PC{
 public void slot(PCI pci){
 pci.pci();
 }
 } class PCIDemo{
 public static void main(String[] args){
 PC pc = new PC();
 pc.slot(new VideoCard());
 pc.slot(new SoundCard());
 pc.slot(new VoiceCard());
 }
 }
 
- 高富帅 
 Height
 Rich
 Handsome
 Girl boyFriend(HRH h)
 用匿名内部类实现- interface Height{
 public void high();
 } interface Rich{
 public void rich();
 } interface Handsome{
 public void handsome();
 } interface HRH extends Height,Rich,Handsome{
 } class Girl{
 public void boyFriend(HRH h){
 h.high();
 h.rich();
 h.handsome();
 }
 } class NoNameDemo{
 public static void main(String[] args){
 Girl girl = new Girl();
 girl.boyFriend(new HRH(){
 public void high(){
 System.out.println("很高");
 }
 public void handsome(){
 System.out.println(“很帅”);
 }
 public void rich(){
 System.out.println(“很有钱”);
 }
 });
 }
 }
 
- 使用适配器模式实现窗口的事件处理程序 
 窗口可以响应最大化事件、最小化事件、大小改变事件、恢复事件、移动事件、关闭事件
 通过适配器对大小改变事件、移动事件和关闭进行默认处理,窗口只关心最大化和最小化事件即可。
 Window
 WindowListener{max min resize restore move close}- interface WindowListener{
 public void max();
 public void min();
 public void resize();
 public void restore();
 public void move();
 public void close();
 } abstract class WindowListenerAdapter implements WindowListener{
 public void resize(){
 }
 public void restore(){
 }
 public void move(){
 }
 public void close(){
 }
 } class Window{
 WindowListener listener;
 public void setListener(WindowListener listener){
 this.listener = listener;
 } public void max(){
 listener.max();
 } public void min(){
 listener.min();
 }
 } class AdapterDemo(){
 public static void main(String[] args){
 Window window = new Window();
 window.setListener(new WindowListenerAdapter(){
 public void max(){
 System.out.println("窗口最大化");
 }
 public void max(){
 System.out.println("窗口最小化");
 }
 });
 window.max();
 window.min();
 }
 }
 
- 使用抽象类和接口实现适配器模式设计。涉及的类和接口分别为ButtonListener(接口), 
 其中含有click() / dbclick() / keyUp() / keyDown()等方法。
 ButtonAdapter(按钮适配器类),适配器中对非click()方法进行默认实现。
 Button类中添加addListener(ButtonListener l)方法。- interface ButtonListener{
 public void click();
 public void dbclick();
 public void keyUp();
 public void keyDown();
 } abstract class ButtonAdapter implements ButtonListener {
 public void keyUp(){
 }
 public void keyDown(){
 }
 } class Button{
 private ButtonListener l;
 public void addListener(ButtonListener l){
 this.l = l;
 }
 public void click(){
 l.click();
 }
 public void dbclick(){
 l.dbclick();
 }
 } class AdapterDemo(){
 public static void main(String[] args){
 Button button = new Button();
 Button.addListener(new ButtonAdapter(){
 public void click(){
 System.out.println("单击了按钮");
 }
 public void dbclick(){
 System.out.println("双击了按钮");
 }
 });
 button.click();
 button.dbclick();
 }
 }
 
- 阐述什么是多态。 
 为什么函数可以覆盖,而属性不能覆盖?
 答:对象的多种状态,对继承来说,用父类引用子类的对象;对接口来说,用接口引用实现类的对象。根据javabean原则,公有方法可以被继承,因此可以被子类覆盖,而属性是私有财产,不能被子类覆盖。
异常
- Throwable 的两个子类Exception 和 Error - java.lang.Object
 |
 |---java.lang.Throwable
 |
 |---java.lang.Error
 |---java.lang.Exception
 
- 使用throw关键字抛出异常对象:throw new XxxException(...); 
- throws关键字用于声明方法抛出了异常 
 public void function(...) throws XxxException,YyyException{
 ...
 }
- Exception的处理方式 - try-catch-finally - try{
 ...
 }
 catch(Throwable e){
 }
 finally{
 }
 - 可以有多个catch语句,catch的顺序需要注意,子类异常需要先行catch,否则代码不可达,编译也无法通过。 
- 在方法上给出抛出异常的声明 
 
- RuntimeException在方法定义时可以不进行抛出声明,也不使用try-catch-finally 进行捕获 
- 方法覆盖时,不可以追加新的异常抛出声明,但是可以抛出所覆盖的方法声明的异常的子类 
package
- 包,类似于文件夹,组织管理类的结构 
 www.sina.com
 www.baidu.com
 com.sina.weibo
- 完整类名:包名 + . + 类名, 比如com.xkzhai.java.PackageDemo 
 路径:com\xkzhai\java\PackageDemo.class
- 编译含有包名的类 - javac -d classes xxx.java //-d指定存放类文件的位置,同时生成对应的文件夹目录树
 javac -cp classes;classes2; -d . xxx.java // -cp 指定贬编译程序时需要搜索的类的类路径顺序
 
- 运行含有包名的类 
 运行java程序,需要指定类的完整类名- java -cp classes com.xkzhai.java.PackageDemo
 
- 引入包中的类,使用import关键字 
- 含有包名的类,需要使用public 修饰,否则无法在其他包中访问 
dos命令
- tree /F //输出目录树
- rmdir /S/Q //递归删除文件夹,不提示
权限修饰符
- public 
- protected 
- default 
- private 
| public | protected | default | private | |
|---|---|---|---|---|
| 同类 | v | v | v | v | 
| 同包 | v | v | v | |
| 子类 | v | v | ||
| 不同包 | v | 
jar
- jar: java archiver, java归档文件 
 打包java库文件
- 对java的类文件进行归档 - //将foo目录下的所有文件进行归档,生成xxx.jar
 jar cvf xxx.jar -C foo/ .
 //归档时,指定入口点,会在清单文件中添加Mai-Class属性
 jar cvfe xxx.jar a.a1.a11.a111.A -C foo/ . //e指定入口点
 
- 通过jar文件执行程序 - java -cp xxx.jar a.a1.a11.a111.A
 java -cp xxx.jar;classes;...;. a.a1.a11.a111.A
 //使用java -jar参数来运行程序
 java -jar xxx.jar //需要在归档时指定入口点
 
作业
- 利用白富美接口案例,土豪征婚使用匿名内部类对象实现。 
- 定义三角形类Trianle,里面包含三个int类型属性,分别表示三条边的长度, 
 构造三角形对象时,任意两边之和是否大于第三边,如若不成立,抛出自定义异常。
- Person类中增加birthday属性,对setBirthday(int ,int , int )方法进行异常处理, 
 要求年有效、月有效、日有效、年月日指定的具体日期有效,对不同情况分别抛出不同的异常。
 year:>1970, month:1-12, day:1-31
- 将类定义到指定的包下。com.xkzhai,编译之后,打成jar文件。 
- 相互之间使用jar包,放置cp下,对class进行重用。 
- 设计程序,考查修饰符。public -> protected -> default -> private(选做题) 
- 编写ArrayTool,把冒泡排序,选择排序,二分法查找,空心三角形等打成jar包。 
- 预习多线程。 
Java基础7-异常;jar包的更多相关文章
- Java基础笔记-异常总结,包
		异常:是对问题的描述,将问题进行对象封装, 异常的体系: Throwable: 1.Error 2.Exception 1.RuntimeException 异常体系的特点: 异常体系中的所有类以及建 ... 
- Java基础-Eclipse第三方安装包管理工具之Maven
		Java基础-Eclipse第三方安装包管理工具之Maven 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 玩过Linux的小伙伴应该都知道yum吧,我们只要把搭建好的yum仓库配 ... 
- Redis(Windows安装方法与Java调用实例 & 配置文件参数说明 & Java使用Redis所用Jar包 & Redis与Memcached区别 & redis-cli.exe命令及示例)
		Windows下Redis的安装使用 0.前言 因为是初次使用,所以是在windows下进行安装和使用,参考了几篇博客,下面整理一下 1.安装Redis 官方网站:http://redis.io/ 官 ... 
- 【转载】JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案
		JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案 本文为转载,原文地址为:https://www.cnblogs.com/adversary/p/103 ... 
- 分享:根据webservice WSDL地址自动生成java调用代码及JAR包
		分享:根据webservice WSDL地址自动生成java调用代码及JAR包使用步骤:一.安装java 并配置JAVA_HOME 及 path二.安装ANT 并配置ANT_HOME三.解压WsdlT ... 
- Java学习-039-源码 jar 包的二次开发扩展实例(源码修改)
		最近在使用已有的一些 jar 包时,发现有些 jar 包中的一些方法无法满足自己的一些需求,例如返回固定的格式,字符串处理等等,因而需要对原有 jar 文件中对应的 class 文件进行二次开发扩展, ... 
- 使用 DJ Java Decompiler 将整个jar包反编译成源文件
		使用 DJ Java Decompiler 将整个jar包反编译成源文件 所使用的软件是 DJ Java Decompiler 3.9. 下面是一个有用的参考文档,说明如何批量编译 http://ww ... 
- java中最常用jar包的用途说明
		java中最常用jar包的用途说明,适合初学者 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实 ... 
- Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参
		Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参 一.打包 情况1:不需要向程序传参数,并且程序没有使用第三方jar包 Eclipse上导出jar: 然后选择一个java文件作为入 ... 
随机推荐
- DSP到底是个什么鬼?看完你就懂了
			DSP 即数字信号处理技术, DSP 芯片即指能够实现数字信号处理技术的芯片. DSP芯片是一种快速强大的微处理器,独特之处在于它能即时处理资料. DSP 芯片的内部采用程序和数据分开的哈佛结构,具有 ... 
- docker pull报错failed to register layer: Error processing tar file(exit status 1): open  permission denied
			近来在一个云主机上操作docker pull,报错如下: failed to register layer: Error processing ): open /etc/init.d/hwclock. ... 
- HDU-problem-1002-人类史上最大最好的希望事件-矩阵快速幂
			Problem Description 作为CNCS的半壁江山,狗哥常常在宇宙中心邵阳眺望黄浦江,夜晚的星空总是迷人,有时候还能见到彗星滑落. 狗哥是幸运的,他在两秒钟内看到了十七颗彗星划过天际,作为 ... 
- Asp.Net Core SignalR 用泛型Hub优雅的调用前端方法及传参
			继续学习 最近一直在使用Asp.Net Core SignalR(下面成SignalR Core)为小程序提供websocket支持,前端时间也发了一个学习笔记,在使用过程中稍微看了下它的源码,不得不 ... 
- vue router mode模式在webpack 打包上线问题
			vue-router mode模式有两种 hash和history. 1.hash —— 即地址栏 URL 中的 # 符号.比如这个 URL:http://www.abc.com/#/hello,ha ... 
- 循环语句之for循环
			什么是循环语句? 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否 ... 
- Kuro and Walking Route CodeForces - 979C (树上DFS)
			Kuro is living in a country called Uberland, consisting of nn towns, numbered from 11to nn, and n−1n ... 
- 【ubuntu】修改php-fpm和nginx运行用户
			(php)项目a是用test用户运行nginx和php-fpm是www-data用户运行(python)项目b是用test用户运行 项目a通过php函数exec调用python脚本的接口造成了没有权限 ... 
- Shell命令-系统信息及显示之stat、du
			文件及内容处理 - stat.du 1. stat:显示inode内容 stat命令的功能说明 stat 命令用于显示 inode 内容.stat 以文字的格式来显示 inode 的内容. stat命 ... 
- Python——Django-模板
			一.模板的种类 1.变量 {{变量名}} 2.语句类{% %} 2.1 {%for i in booklist%} {{i}} {%endfor%} 2.2 {%if 10>5%} {%else ... 
