ava后端高频知识点学习笔记1---Java基础
参考地址:牛_客_网
2022届秋招Java后端高频知识点汇总①--Java基础_技术交流_牛客网
1、重载和重写的区别
重载: 同一类中多个同名方法根据不同的传参来执行不同的处理逻辑 ;方法名必须相同,参数类型不同、个数不同、顺序不同;返回值类型可以相同也可以不同(因为返回值类型不是 方法签名 的一部分)
重写: 子类对父类的方法的实现过程进行重新编写 。方法名,参数列表和返回值类型都不能改变。抛出的异常范围小于等于父类,访问修饰符范围大于等于父类。
什么是方法签名?
答:方法签名, 区分不同方法的标示符 ; 方法是由方法名、形参列表、返回值以及方法体构成 ; 方法签名是由方法名与形参列表构成 ,也就是说,方法名和形参列表可以唯一地确定一个方法,与方法的返回值没有关系
构造器是否可以被重写,是否可以被重载?
答:构造器可以被重载(Overload),不能被重写(Override)
静态方法能否被重写,能否被重载?
答: 静态方法不能被重写,可以被重载
静态方法可以被继承。 静态方法是类在加载时就被加载到内存中的方法,在整个运行过程中保持不变,因而不能重写 ;在Java中,如果父类中含有一个静态方法,且在子类中也含有一个返回类型、方法名、参数列表均与之相同的静态方法,那么该 子类实际上只是将父类中的该同名方法进行了隐藏,而非重写,可以通过类名.方法名调用被隐藏地方法 ;换句话说,父类和子类中含有的其实是两个没有关系的方法,它们的行为也并不具有多态性
2、Java面向对象的三大特性
封装:把一个对象的属性私有化,不允许外部对象直接访问这些私有属性,同时提供一些可以被外界访问私有属性的方法
继承:子类继承父类的非私有属性和方法;子类可以对父类的方法进行重写,也可以进行扩展,拥有自己的属性和方法;一个子类只能拥有一个父类,但是可以通过实现多个接口来达到多重继承的目的
多态:同一个操作作用在不同对象时,可以产生不同的执行结果;在Java语言中,多态主要有两种表现形式,方法的重载和重写
多态分为编译时多态-->重载;运行时多态-->重写
- 重载 :同一个类中有多个同名方法,根据不同的传参可以执行不同的处理逻辑; 在编译时就可以确定到底调用哪个方法,它是一种编译时多态
- 重写 :子类对父类的方法的实现过程进行重新编写,方法名,参数列表和返回值类型都不能改变,因此同样的方法在父类与子类中有着不同的表现形式。
Java语言中,父类的引用变量不仅可以指向父类的实例对象,也可以指向子类的实例对象 。而程序调用的方法在运行时才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存中正在运行的那个对象的方法,而不是引用变量的类型中的定义的方法。这就会出现相同类型的变量调用同一个方法时呈现出多种不同的行为特征,这就是多态; 在运行时才能确定调用哪个方法,被称为运行时多态
使用多态的好处?
多态:同一个操作作用在不同对象时,可以产生不同的执行结果; 使用多态,可以解决代码的紧耦合的问题,提高程序的可扩展性
- 应用程序不必为每一个子类编写功能调用,只需要对抽象父类进行处理即可,大大提高程序的可复用性
- 子类的功能可以被父类的方法或引用变量所调用,这叫向上兼容,可以提高可扩充性和可维护性
3、Java面向对象的5大设计原则
原则 | 描述 |
---|---|
单一职责 | 一个类只负责一个功能的实现 |
里氏替换 | 只要父类出现的地方,都可以用子类替换 |
依赖倒置 | 高层模块不应该依赖低层模块,二者都应该依赖其抽象;就是面向接口编程 |
接口隔离 | 接口的功能尽可能单一;接口更可能细化,不要建立臃肿庞大的接口 |
开闭 | 尽量通过扩展来面对需求的更改或者系统的变化,尽量不要对原有内容修改 |
4、String、StringBuilder和StringBuffer的区别是什么?
(1)String是不可变的,StringBuilder和StringBuffer是可变的
String不可变,String类中使用final关键字修饰char字符数组来保存字符串; private final char value[] ,从Java9开始,String类的实现改用byte字节数组存储字符串; private final byte[] value
而StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串char[] value但是没有用final关键字修饰,所以这两种对象都是可变的
(2)String和StringBuffer是线程安全的,StringBuilder不是线程安全的
String中的对象的不可变的,所以是线程安全
StringBuffer对方法加了synchronized同