1、重载和重写的区别:
重载:overload 同一个方法能够根据输入数据的不同,做出不同的处理
- 发生在同一个类中,方法名必须相同,参数类型不同,个数不同,顺序不同,方法返回值和访问修饰符可以不同。
- 重载就是同一个类中有多个名字相同的方法,但参数各不相同,方法根据不同的传参来执行不同的逻辑处理。
- 让类以统一的方式处理不同类型数据的一种手段
- 重载Overloading是一个类中多态性的一种表现
- 调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性
重写:override 当子类继承自父类的相同方法,输入相同的数据,
但做出和父类不同的响应,你就要覆盖父类方法。
- 重写发生在运行期,是子类对父类的允许访问的方法的实现过程进行重新编写
- 1、返回值类型、方法名、参数列表必须与重写的方法相同,抛出的异常范围小于等于父类,访问修饰符范围大于父类
- 2、如果父类修饰符为private、final、static,则子类就不能重写该方法,但被static修饰的方法能够再次声明
- 3、构造方法无法被重写
-
1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;
-
2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;
-
3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类
-
4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
2、java三大特性
封装:
1、把一个对象的属性私有化,并提供一些可以被外界访问的属性方法
2、一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以完成自己的操作
3、如果属性不想被外界访问。可以不提供方法为外界;但如果一个类没有给外界提供访问的方法,这个类又有什么用?没有意义
继承:
使用已存在的类的定义作为基础建立新类的技术,新类的定义可以添加新的数据、功能、也可以用父类的功能,但不能选择性的继承父类。
1、子类拥有父类对象的所有属性和方法(包括私有属性和私有方法),但父类中私有属性和方法,子类是无法访问,只拥有
2、子类可以拥有自己的属性和方法,子类可以对父类进行扩展
3、子类可以用自己的方式实现父类的方法
多态:
1、一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定
2、子类Child继承父类Father,可以编写一个指向子类的父类类型引用,该引用既可以处理父类Father对象,也可以处理子类Child对象,当相同的消息发送给子类或者父类对象时,该对象就会根据自己所属的引用而执行不同的行为,这就是多态。
3、即多态性就是相同的消息使得不同的类做出不同的响应
3、== 和equals()
== :
比较值是否相等
判断两个对象的地址是不是相等;
基本数据类型 == 比较的是值 (常量池),引用数据类型 == 比较的是内存地址
equals():
比较的是是否是同一个对象,equals方法不能作用于基本数据类型的变量
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容
4、线程、进程、程序
进程:
程序的一次执行过程,系统运行程序的基本单位,进程是动态的
系统运行一个程序:从创建、运行到消亡,一个进程就是一个执行中的程序,进程占用:系统资源、CPU空间、内存空间、文件
进程是相互独立的,但线程可能互相影响
Windows上:进程有QQ、微信、浏览器、interllij
线程:
进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。
进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位
程序:
含有指令和数据的文件,被存储在磁盘or其他数据存储设备中,程序是静态代码
5、线程的状态
初始状态、运行状态、阻塞状态、等待状态、超时等待状态、终止状态
6、final关键字
主要用在:变量、方法、类
1、对于一个final变量,是基本数据类型的变量话,数值被确定后不能再修改;是引用变量,在初始化后,不能再指向另一个对象
2、final修饰一个类,这个类不能被继承;final类中的所有成员方法都会被隐式地指定为final方法
3、final方法:1、把方法锁住,防止其他继承类修改它的含义;2、效率
7、final、static、super关键字
https://gitee.com/SnailClimb/JavaGuide/blob/master/docs/java/basic/final,static,this,super.md
8、深拷贝和浅拷贝
深拷贝:对基本数据类型进⾏值传递,对引⽤数据类型,创建⼀个新的对象,并复制其内容,此 为深拷⻉。
浅拷贝:对基本数据类型进⾏值传递,对引⽤数据类型进⾏引⽤传递般的拷⻉,此为浅拷⻉