java基础(抽象类、接口、包装类、异常、多线程)

抽象类和接口

抽象类定义:

抽象类:又叫抽象基类(不是鸡肋):他在定义的时候使用 abstract 关键字标记的一般类.他可包含一般类所包含的所有特性,例如,字段,属性,方法,另外他还包含一个很特殊的方法,叫抽象方法(这些方法基本上是没有执行代码的函数标题,而派生于该类的的类就必须提供执行的代码).最可气的是,他不能被实例化,他主要的用在类的定义和部分实现这方面,所以他需要在扩充类中完整的扩充并实现功能.

抽象方法定义:

抽象方法;当类中的方法在声明的时候加上 abstract 关键字的时候,他就被我们称为抽象方法

提醒:只有在抽象类和接口中才可以使用抽象方法.

抽象类特点:

1.包含抽象方法的类一定是抽象类

2.抽象方法和抽象类都用关键字abstract修饰

3.构造方法,static方法都不能定义为抽象方法

4.抽象方法不能使用private访问控制符修饰

5.抽象方法只需要声明,不需要实现

6.抽象类中可以定义构造方法,但是抽象类不能创建对象

7.子类继承抽象类时,需要重写抽象类中所有的抽象方法,除非子类也是抽象类

抽象类的语法:

[访问控制符] abstract class 类名{

0-n个属性;

[修饰符] 返回值类型 方法名([参数列表]){

方法体;

[return 返回值;]

}

[修饰符] abstract 返回值类型 方法名([参数列表]);

}

注意;1.如果一个类包含抽象方法,那么这个类一定是抽象类

 2.抽象类可以包含普通方法

 3.普通类继承抽象类,一定要实现(重写)父类的抽象方法

接口

接口特点:

1.一个类只能继承一个直接的父类,但是一个类可以实现多个接口(多继承)

2.接口中不能定义构造方法,接口不能实例化

3.接口中方法全部都是抽象方法,接口中属性全部都是全局常量

4.当一个类实现(继承)某个接口时,他必须实现接口中所有的方法,除非这个类定义为抽象类

接口语法:

[修饰符] interface 接口名{

全局变量;

抽象方法;

}

包装类

8中基本数据类型对应的包装类int——Integer       char——Character

除了intchar外其他的6个都是首字母改大写即可

ByteShortIntegerLongFloatDouble都是Number的子类

CharacterBoolean都是Object的子类

基本数据类型和包装类型转换:

自动装箱:将基本数据类型直接赋给一个包装类型对象,或者直接赋给一个Object类型对象

自动拆箱:包装类型对象可以直接赋给一个基本类型变量

基本数据类型和字符串转换:

字符串---》基本类型(使用对应包装类的parseXXX()方法完成)

基本类型---》字符串(使用String类中的valueOf()方法完成,或则使用基本类型加上一个空字符串)

异常处理

异常处理原理:

Error类对象由Java虚拟机生成并抛出;一般不能由应用程序直接处理,必须交由操作系统处理。(硬件原因造成的运行错误)

Exception类对象由应用程序处理或抛出。Exception分为两类:

1.运行时异常

 RuntimeException的子类异常。Java编译器允许程序不对它们做出处理

2.非运行时异常

 除了运行时异常之外的其他由Exception继承来的异常类。Java编译器要求程序必须捕获或声明这种异常,否则编译就报错

异常处理方法:

自行处理:可能引发异常的语句封入在 try块内,而处理异常的相应语句则封入在 catch 块内

回避异常:在方法声明中包含 throws 子句,通知潜在调用者,如果发生了异常,必须由调用者处理

五个关键字:

try…catch 最基本的异常处理方式

try…catch…finally如果无论发生什么情况,有些代码必须执行,则可以放到finally块中(eg:关闭资源、事务处理)

throws 处理异常(抛出异常)

throw 抛出自定义异常

Finalfinallyfinalize的区别:

Final修饰类:类不可被继承

Final修饰变量:变量值不可变

Final修饰方法:方法不可被重写

Finally用于捕获异常  try catch finally语句

Finalize用于处理垃圾回收

多线程

多线程概念:

程序:程序就是一段静态的代码,他是程序执行的蓝本

进程:进程本质是程序的一次动态执行      特点:1.动态性 2.并发性 3.独立性

线程:进程内部的一个执行单元。也可称为子进程

多线程的优势:

1.多线程使系统空转时间减少,提高CPU利用率

2.进程间不能共享内存,但线程之间共享内存非常容易

3.使用多线程实现多任务并发比多进程的效率高

4.Java语言内置多线程功能支持,简化了Java的多线程编程 

多线程创建:

继承Thread类,重写run方法

实现Runnable接口,实现run方法

启动线程:

新建的线程不会自动执行,必须通过start()方法启动。

注意:

1.直接调用run()方法不会启动线程,只是一次普通的方法调用。在多线程的程序中永远不会调用run方法。

2.一条线程只能启动一次。如果启动多次会报IllegalThreadStateException异常。

启动继承Thread类的线程

启动实现Runnable接口的线程

创建线程方法对比:

        继承Thread类:优点, 简单      缺点,无法在继承其他类、无法实现资源共享

实现Runnable接口:优点,可以继承其他类、可以实现资源共享     缺点,复杂

线程生命周期:新建-就绪-运行-阻塞-死亡

线程同步:

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

 

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



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值