Java基础7-异常;jar包
昨日内容回顾
多态:多种状态,多态的前提条件是继承或者是实现
面向接口编程
- 降低耦合度
- 接口是最低标准,接口可以多重继承
- 接口中的所有方法都是抽象方法
- 抽象类中可以没有抽象方法
匿名内部类对象
将对类的继承,方法重写,对象的创建集成到一行代码中区。
作业解析
使用接口进行如下程序设计
个人电脑(PC)具有PCI插槽,可以插入PCI卡。显卡、声卡、语音卡都可以作为PCI卡插入PCI插槽中
PC,PCI,slot,VideoCard,SoundCard, VoiceCardinterface 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文件作为入 ...
随机推荐
- Codeforces Round 1153(div. 2)
这场奇差.ABCD四题.179名. 但是E在现场有213个人做出. 描述一下我在35分钟做完D后的心路历程. 首先看到这道E,第一下想到的是把所有的横向和竖向的整列(行)求出相连的个数. 然后想如何能 ...
- 毕业季,我的Linux求职之路
秋招终于告一段落了,本硕的七年求学之路也快画上了句号.回首求职的这一段日子,痛苦并快乐着.感谢所有陪伴着我走过这一段路程的同学,所有的辛酸都值得铭记.求职的过程中在网上看了很多的求职经验,现在想写一篇 ...
- (PAT)L2-012 关于堆的判断 (最小堆)
题目链接:https://www.patest.cn/contests/gplt/L2-012 将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: “ ...
- 软件工程(GZSD2015) 第二次作业小结
第二次作业,从4月7号开始,陆续开始提交作业.根据同学们提交的作业报告,相比第一次作业,已经有了巨大改变,大家开始有了完整的实践,对那些抽象的名词也开始有了直观的感受,这很好.然后有一些普遍存在的问题 ...
- mysql监控每一条执行的sql语句
查看日志配置是否打开 SHOW VARIABLES LIKE "general_log%"; SET GLOBAL general_log = 'ON'; 打开日志 SET G ...
- nginx中的epoll模型
要了解epoll模型,就要一个一个知识点由浅至深地去探索. 1.IO复用技术 IO流请求操作系统内核,有串行处理和并行处理两种概念. 串行处理是前面一个操作处理地时候,后面的所有操作都需要等待.因此, ...
- RPM Database 实战详解
RPM 是 RPM Package Manager 的简写,是发源于 Red-hat 系统的软件管理工具,所以最初的名字叫做 Red-hat Packager Manager.目前,RPM 已发展成为 ...
- 17.kubernete的dashboard
部署dashboard kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/depl ...
- [SimplePlayer] 8. 音视频同步
音频与视频在播放当中可能会由于种种原因(如:音视频并非在同一时间开始播放,或视频由于解码任务繁重导致输出图像延迟等)导致音频与视频的播放时间出现偏差,这种就是音视频的同步问题,本文会对音视频同步进行讨 ...
- P1020 导弹拦截 (贪心+最长不降子序列)
题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...