当前位置: 代码迷 >> 综合 >> 第一阶段 面向对象
  详细解决方案

第一阶段 面向对象

热度:8   发布时间:2024-02-22 21:11:26.0

面向对象

1.什么是面向对象?

面向对象指将需求按功能,特点进行划分,将其中的共性封装成一个对象,
优点:容易维护,增加代码的复用,容易进行代码的扩展
缺点:性能比面向过程要低

面向对象的特性

1.继承性:子类继承父类,可以实现父类的所有功能,同时还可以在不改变父类代码的情况下,对父类的功能进行扩展。
2封装性:将不需要对外的内容隐蔽起来,同时将属性隐藏,提供一个公共的访问方式,这样做的优点:
1对代码进行封装,提高了代码的复用性
2属性设为私有,只提供访问的方式,提高了代码的安全性
3多态性:父类对象指向子类引用。可以通过父类的对象,调用子类的方法,以此来达到功能的扩展

重写和重载的区别

重写:1重写发生在父子类中,方法名相同,参数列表相同,但是方法体不同
2重写是在“运行期绑定”,通过对象的类型来调用方法
重载:1重载发生在同一个类中,方法名相同,参数列表不同,方法体不同
2重载是在编译期绑定,通过参数来调用方法

静态代码块,静态方法,静态变量和成员变量

静态代码块:1在类被加载时加载,且只加载一次,一直存在
2.运用在一些照片,图片,音频等资源的加载
静态方法:1属于类,存储于方法区中,
2可以通过类名来调用
3静态方法中不可以有实例成员,不能有this或super
4运用在方法与参数有关,与对象无关

静态变量;1属于类,可以通过类名来调用,存储于方法区中
2运用在所有对象共享的数据中。如图片,视频
静态变量在类加载时就被加载,而成员变量则是在对象被实例化时才加载

接口和抽象类的区别

1接口用interface定义,抽象类用abstract定义
2接口中只有常量和抽象方法,抽象类中有抽象方法的一定是抽象类,没有抽象方法的类也可以被定义成抽象类
3接口和抽象类都不能被实例化
4.接口可以被继承和实现,一个实现类可以实现多个接口,当同时有继承和是实现时,先继承后实现,必须重写接口中的所有抽象方法
抽象类只能被继承,可以重写抽象方法,也可以将继承的类用abstract修饰,但是一般不这样用
抽象类的意义:1)封装派生类的共性,提高代码的复用性
2)为所有的派生类提共统一的入口,他们的实现不同,但是他们的入口是一致的,即重写的是同样的抽象方法

String,StringBuilder,StringBuffer的区别

1String字符串是不可变的:String被final修饰
2在不考虑线程安全的情况下用StringBuilder,它的效率比StringBuffer快
在考虑线程安全的情况下用StringBuffer,

简单了解集合

集合分为collection和map
collection分为List和Set
List存储的数据是有序的,存储的数据可以重复,也可以为null,Set存储的数据是无序的,且存储的数据不能重复,不可以为null

List又分为Arraylist, linkedList. Vector
ArryList和Vector底层是数组,ArryList是轻量级,查询快,增删慢,但是不安全。Vector是重量级,安全
LinkedList 底层是链式结构,方便增删,但是查询慢

Set分为HashSet和LinkedHashSet
hashSet 存储的数据是无序的
LinkedHashSet 底层维护了一个双重链接列表,存储的数据是有序的

Map分为 HashMap,HashTree,HashTable,LinkedHashMap
HashMap 以Key,Value 键值对的方式存储数据,key不可以重复,value可以重复,允许存放null值和键,且存储的数据是无序的
HashTree 线程安全的,不允许存放null键和值
LInkedHashMap 对key排好顺序的Map
HashTable 与hashmap的不同是它的底部维护了一个双重链接列表,存储的数据是有序的

线程和进程的基本概念

线程:线程是cpu调用和分配的基本单位,它可以与同属于同一个进程的其他线程共享进程的所有全部资源
进程:进程是程序的一次执行过程,进程是程序执行过程中分配和管理资源的基本单位,每一个进程都有一个独立的空间地址。
进程有5种状态:初始状态,执行状态,等待状态,就绪状态,终止状态

线程和进程的区别

1进程是系统分配和管理资源的基本单位,而线程是cpu调用和分配的基本单位
2。进程都有自己独立的代码和资源空间,进程的转换消耗较大,而同一类线程共享进程中的代码和资源,每一个线程都有自己独立的运行栈和程序的计数器,消耗较小
3 系统中可以有多个进程同时进行,而同一个进程中有多个线程同时进行(通过cpu的调度,每个时间片上只能有一个线程进行)
4.进程在系统运行时会分配内存和资源,而线程是有cpu来分配内存(线程的资源是由所属的进程来提供),线程组只能共享资源
5线程是进程的一部分,没有线程的进程被称为单线程,有多个线程的进程是有多个进程共同完成的,所以叫多线程。线程可以看作是一个轻量级的进程。

线程的生命周期

1新建 新建一个线程
2可运行状态(runable):当线程创建后,其他线程调用了该进程的start()方法,该进程进入可运行状态,等待被线程调度选中,获取 cpu的使用权。
可能出现的情况:1)可运行状态只是表示有资格运行,如果没有被调度程序选中,则永远是可运行状态
2)当执行线程的sleep()结束,或join()方法结束,或者等待用户输入,或者线程拿到同步锁时,线程进入可运行状态
3)当前线程的时间片用完了,执行yield方法
4)锁池里的线程拿到同步锁,进入可运行状态

3运行状态(running):可运行状态的线程拿到了cpu的时间片,执行了程序的代码
4阻塞状态:线程因为某种原因,让出了cpu的使用权,暂时停止运行
阻塞的3种状态:等待阻塞:当线程执行o.wait()方法时,JVM会把线程放入等待列表中
同步阻塞:当线程在获取对象的同步锁时,该同步锁被其他的线程占用,则将该线程放入锁池中
其他阻塞:当线程执行sleep(),join(),或者有IO请求时,当sleep()状态超时,join()方法结束时,或请求处理完时,该线程重新进入可运行状态。
5死亡状态:线程run(),main()方法执行结束时,或者因异常退出run()方法时,线程结束生命周期,结束的线程不可以再复生。