学习多态、抽象类和接口、包装类、异常、多线程

一、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资源。如果一段时间后导致暂停的原因得到解决,线程从阻塞状态转入到就绪状态。

◆死亡:

线程运行结束了线程会自动死亡;线程运行中发送ErrorException线程也会死亡。


4、线程常用方法

static Thread

currentThread() 
          返回对当前正在执行的线程对象的引用。

 String

getName() 
          返回该线程的名称。

 int

getPriority() 
          返回线程的优先级。

 boolean

isAlive() 
          测试线程是否处于活动状态。

 boolean

isDaemon() 
          测试该线程是否为守护线程。

 void

join() 
          等待该线程终止。

 void

run() 
          如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。

 void

setDaemon(boolean on) 
          将该线程标记为守护线程或用户线程。

 void

setName(String name) 
          改变线程名称,使之与参数 name 相同。

 void

setPriority(int newPriority) 
          更改线程的优先级。

static void

sleep(long millis) 
          在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。

 void

start() 
          使该线程开始执行;Java虚拟机调用该线程的 run 方法。

static void

yield() 
          暂停当前正在执行的线程对象,并执行其他线程。

5、线程同步

1.间接相互制约:AB两条线程,A请求打印机时,CPU将打印机分配给BA只能等待B打印完,A才能从阻塞转为就绪态。 

2.直接相互制约:直接相互制约主要用于进程间相互合作。



 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值