JAVAOOP笔记

#JAVAOOP 系列文章目录

第三章 多态
1、多态:同一操作,使用不同的对象,产生不同的效果

2、多态的三要素:
2.1:有继承关系【没有继承就没有多态】
2.2:方法的重写【子类重写父类的方法】
2.3:向上转型【父类的引用指向子类对象】,也叫自动类型转换,例如:Pet pet=new Dog()

3、多态的优点:
3.1:减少代码量
3.2:提高了代码的可扩展和可维护性

4、实现多态的两种方式:
4.1:父类作为方法的形参,子类作为实参
4.2:父类作为方法的返回值类型

5、**注意事项:**父类做类型,子类实例化时,不能调用子类特有的方法

6**、引用转型:**
6.1:向上转型【自动类型转换】,例如:Pet pet=new Dog()
6.2:向下转型【强制类型转换】,Dog dog=(Dog)pet,可能会报错,一般和instanceof一起用

7、instanceof是一个运算符,判断对象类型是否是指定的类型,返回布尔值,父类不能自动
变成子类,必须强制类型转换,这个过程就是向下转型,经常用到instanceof

第四章 接口
1、接口代表一种能力,也是一种约束
2、接口的好处:弥补单继承的不足,接口有利于代码的扩展和维护
3、继承是is-a的关系,接口是has-a的关系
4、接口的特性:
4.1:接口中只能写静态常量和抽象方法
4.2:接口中所有的方法都是抽象方法,public abstract修饰符可以省略
4.3:接口中所有属性都是静态常量,public static final修饰符可以省略
4.4:接口不能实例化,他是一个特殊的抽象类
4.5:接口不能有构造方法,而抽象类可以有构造方法
4.6:一个类只能继承一个父类,但可以实现多个接口,多个接口之间用逗号隔开
4.7:接口可以作为一个数据类型使用
4.8:实现接口必须实现接口中所有的方法
4.9:接口可以继承接口,但接口不能实现接口
5、接口中的关键字:定义接口interface 实现接口implements
6、如果一个类有继承,有实现,必须先写继承,再写实现
7、c#中的接口可以写属性和方法,不能写字段,不能写静态常量,不能写访问修饰符

第五章 异常
1、异常:是java应用程序抛出和处理的非严重错误,可以分为Checked异常(非运行异常)和运行时异常两大类
2、异常的关键字:try catch finally throw throws
3、finally只有在System.exit(1)的时候不会执行,其他情况都会执行
4、Exception是所有异常的父类
5、如果catch中存在return ,finally语句也会执行,最后执行return
6、多重catch分别处理不同异常,但排列顺序从子类到父类,一般最后一个catch写Exception
7、常用的异常:
Exception 所有异常的父类
ArithmeticException 算术异常,例如除数为0
ArrayIndexOutOfBoundsException 数组下标越界
NullPointerException 空指针异常
ClassNotFoundException 不能加载所需的类
IllegalArgumentException 方法接收到非法的参数
ClassCastException 对象强制转换错误
NumberFormatException 数字转换格式异常

8、**log4j日志记录工具:**常用的使用方式是配置log4j.properties文件,来控制
日志输出级别,目的地,输出格式
日期输出级别:fatal>error>warn>info>debug

第六章 集合框架
1、集合框架:是为表示和操作集合而规定的一种统一的标准体系结构,它包含三大内容:
1.1:对外的接口
1.2:接口的实现类
1.3:对集合运算的算法

2、接口:
2.1:Collection【不唯一,无序】
List【不唯一,有序】
Set 【唯一,无序】
2.2:Map 【键值对】

3、实现类:
3.1:List接口实现类:ArrayList LinkedList
3.2:Set接口实现类 :HashSet TreeSet
3.3:Map接口实现类 :HashMap TreeMap

4、ArrayList集合【遍历和随机访问效率高】
add()添加
get()获取
remove()删除
clear()清空
contains()是否包含
size()集合元素个数

5、LinkedList【添加和删除效率高】
addFirst()添加到首位
addLast()添加到末尾
getFirst()获取第一个元素
getLast()获取最后一个元素
removeFirst()删除第一个元素
removeLast删除最后一个元素

6、HashMap【存储键值对,无序的,key不能重复,value可以重复】
put()添加
remove()删除键,等于删除了键值对
get(key)根据键获取值
containsKey()判断是否存在键
containsValue()判断是否存在值
keySet()所有键的集合,返回Set
values()所有指定的集合

7、使用泛型集合在创建集合对象的时候指定集合中元素的类型,从集合中取出元素的时候无需
进行强制类型转换,避免了ClassCastException异常

8、迭代器Iterator为集合而生,专门实现集合的变量

第七章 多线程
1、进程和线程的区别:一个进程可以包含一个或多个线程,线程是进程的最小单位,一个进程必须有一个主线程

2、创建线程的2种方式:
2.1:继承Thread
2.2:实现Runnable接口(推荐)

3、使用线程的步骤
3.1:定义线程
3.2:创建线程对象
3.3:启动线程
3.4:终止线程
4、启动线程用**start()方法,不是run()**方法,启动线程后主线程和子线程并行交替执行
run()执行子线程的代码,属于单线程

5、线程的状态
5.1:创建状态:new线程的时候
5.2:就绪状态:**start()启动/yield()礼让的时候
5.3:运行状态:run()
5.4:阻塞状态:

**休眠
5.5:死亡状态:run()方法执行完毕后

6、线程的优先级
6.1:优先级取值范围:1-10默认5,数值越大优先级越高,获取CPU资源概率越大

7、线程的调度:
**sleep()**休眠 **yield()**礼让 **join()**强制执行

8、线程同步:
8.1:多线程并发执行同一个共享资源会出现数据不安全问题–解决方法:加锁
8.2:同步(加锁)的关键字:synchronized
8.3:同步两种方式:同步方法和同步代码块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值