一、Java中多态可以分为两类
①.方法的重载、重写
◆重载:静态多态(编译时多态)
◆重写:动态多态(运行时多态)
②掌握两种形式的多态
★1.方法的重载、重写
◆重载:方法重载值得是在同一个类中,多个方法名相同,参数列表不同(个数、类型、顺序),这就是重载。
◆重写:(覆写,覆盖) 方法重写值得是在继承中,如果父类中某个方法不能满足子类的需求,子类可以重写父类的这个方法,这就是方法重写。
二、掌握抽象类的特点
◆包含抽象方法的类一定是抽象类.
◆抽象方法和抽象类都用关键字abstract修饰
◆构造方法,static方法都不能定义为抽象方法。
◆抽象方法不能使用private访问控制符修饰。
◆抽象方法只需要声明,不需要实现。
◆抽象类中可以定义构造方法,但是抽象类不能创建对象。
◆子类继承抽象类时,需要重写抽象类中所有的抽象方法,除非子类也是抽象类。
2、掌握接口的特点(interface)
◆一个类只能继承一个直接的父类,但是一个类可以实现多个接口。(多继承)
◆接口中不能定义构造方法,接口不能实例化。
◆接口中方法全部都是抽象方法,接口中属性全部都是全局常量
◆当一个类实现(继承)某个接口时,他必须实现接口中所有的方法,除非这个类定义为抽象类。
三、掌握8中基本数据类型对应的包装类
基本数据类型 | 包装类 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
说明:
除了int、char外其他的6个都是首字母改大写即可。
Byte、Short、Integer、Long、Float、Double都是Number的子类
Character、Boolean都是Object的子类
四、异常(异常处理的原理)
1、Java中异常处理原理如下:
◆在Java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象。
◆生成的异常对象将传递给Java运行时系统(JRE),这一异常的产生和提交过程称为“抛出(throw)异常”。
◆当JRE得到一个异常对象时,它首先寻找处理此异常的代码。如果找到能够处理这种类型异常的代码方法后, JRE把当前异常对象交给这个方法进行处理,这一过程称为捕获(catch)异常。
◆如果JRE找不到可以捕获异常的方法,则JRE将终止,相应的Java程序也将退出。
2、掌握异常处理的方法
Java 中可用于处理异常的两种方式:
◆自行处理:可能引发异常的语句封入在 try 块内,而处理异常的相应语句则封入在 catch 块内。
◆回避异常:在方法声明中包含 throws 子句,通知潜在调用者,如果发生了异常,必须由调用者处理。
3、try,catch,finally,throws,throw五个关键字
五、多线程的优势
◆多线程使系统空转时间减少,提高CPU利用率
◆进程间不能共享内存,但线程之间共享内存非常容易
◆使用多线程实现多任务并发比多进程的效率高
◆Java语言内置多线程功能支持,简化了Java的多线程编程
1、创建多线程
★继承Thread类,重写run方法
★实现Runnable接口,实现run方法
2、创建线程的方法对比:
优点 | 缺点 | |
继承Thread类 | 简单 | 无法再继承其他类 无法实现资源共享 |
实现Runnable接口 | 可以继承其他类 可以实现资源共享 | 复杂 |
3线程生命周期
◆新建:
使用new关键字创建一个线程对象,在尚未调用start()方法前线。
◆就绪:
调用线程的start()方法后(注意:线程不是一调用start()方法就立即执行,必须等到线程获得CPU资源才可以执行)
◆运行:
就绪状态的线程获得CPU资源就到了运行状态(但是线程不会“霸占”CPU)
◆阻塞:
一个正在执行的线程因为某些原因而导致的暂停(eg:打印机缺纸、等待用户输入….),阻塞时线程会让出CPU资源。如果一段时间后导致暂停的原因得到解决,线程从阻塞状态转入到就绪状态。
◆死亡:
线程运行结束了线程会自动死亡;线程运行中发送Error或Exception线程也会死亡。
4、线程常用方法
static Thread | currentThread() |
getName() | |
int | getPriority() |
boolean | isAlive() |
boolean | isDaemon() |
void | join() |
void | run() |
void | setDaemon(boolean on) |
void | |
void | setPriority(int newPriority) |
static void | sleep(long millis) |
void | start() |
static void | yield() |
5、线程同步
1.间接相互制约:A与B两条线程,A请求打印机时,CPU将打印机分配给B,A只能等待B打印完,A才能从阻塞转为就绪态。
2.直接相互制约:直接相互制约主要用于进程间相互合作。