26.1.12|JavaSE复盘补充,整到哪里算哪里(一)

声明:此篇文章,作为个人梳理复盘用,主要是想将已经遗忘的知识点重新串联串联,没有学过的知识补充一下,可能不够严谨,如有不当欢迎指正,谢谢!

对于复习的人来讲,或者学了一些,但是没有学透彻,感觉啥都知道点,但是又不是特别清楚那种,感觉重新看网课太浪费时间,不学跳过又不太行,比如我。

感觉看网站上的知识点相当不错了,感觉效率高很多,尤其是找到喜欢的阅读材料!!!

目录

构造方法

方法重载

继承

向上转型

向下转型

必须用super的时候:

多态

final

覆写

调用super

抽象类

接口

封装

访问修饰符

[抽象类 抽象事物的描述](#抽象类 抽象事物的描述)

[接口类 约定规则的描述](#接口类 约定规则的描述)

多态

概念

多态分为

instannceof运算符

Object类常用方法

异常

异常处理

自定义异常

字符串


构造方法

创建对象实例时就把内部字段全部初始化为合适的值,构造方法的名称就是类名,和普通方法相比,构造方法没有返回值(也没有void),调用构造方法,必须用new操作符。


方法重载

这种方法名相同,但各自的参数不同,称为方法重载Overload)。


继承

不要写重复的代码不要写重复的代码,子类自动获得了父类的所有字段,严禁定义与父类重名的字段!

子类无法访问父类的private字段或者private方法。为了让子类可以访问父类的字段,我们需要把private改为protected。【protected关键字可以把字段和方法的访问权限控制在继承树内部

Super: 子类引用父类的字段时,可以用super.fieldName

向上转型
向下转型

父类类型强制转型为子类类型,最好借助instanceof判断;

必须用super的时候

父类的构造方法有参数的时候。如果父类没有默认的构造方法,子类就必须显式调用super()并给出参数以便让编译器定位到父类的一个合适的构造方法。

这里还顺带引出了另一个问题:即子类不会继承任何父类的构造方法。子类默认的构造方法是编译器自动生成的,不是继承的。


多态

Java的实例方法调用是基于运行时的实际类型的动态调用,而非变量的声明类型。

这个非常重要的特性在面向对象编程中称之为多态

多态具有一个非常强大的功能,就是允许添加更多类型的子类实现功能扩展,却不需要修改基于父类的代码。【缩短代码量,不用重复啰嗦一堆具体的代码】

final

如果一个父类不允许子类对它的某个方法 进行覆写 ,可以把该方法标记为final。用final修饰的方法不能被Override

用final修饰的不能被继承

用final修饰的字段在初始化后不能被修改

覆写

子类如果定义了一个与父类方法签名完全相同的方法,被称为覆写 (Override)。如果方法签名相同,并且返回值也相同,就是**Override。**

覆写Object方法

因为所有的class最终都继承自Object,而Object定义了几个重要的方法:

toString():把instance输出为String;

equals():判断两个instance是否逻辑相等;

hashCode():计算一个instance的哈希值。

调用super

在子类的覆写 方法中,如果要调用父类的被覆写的方法,可以通过super来调用。


抽象类

可以通过抽象类Person类型去引用具体的子类的实例

这种尽量引用高层类型,避免引用实际子类型的方式,称之为面向抽象编程。

抽象方法 本质上是定义接口规范:即规定高层类的接口,从而保证所有子类都有相同的接口实现,这样,多态就能发挥出威力。


接口

  • 抽象类,没有字段,都是抽象方法,可以改写成接口interface,implements去实现。

  • 一个类可以实现多个接口

  • 接口继承接口用extends

  • 在接口中,可以定义default方法。

  • 实现类可以不必覆写default方法。default方法的目的是,当我们需要给接口新增一个方法时,会涉及到修改全部子类。如果新增的是default方法,那么子类就不必全部修改,只需要在需要覆写的地方去覆写新增方法。

    class Student implements Person, Hello

封装

通过使用private修饰、getter/setter方法负责读取 修改 校验属性值、限制外界对其的访问。

static 修饰类中修饰,共享,不随成员变


访问修饰符

private【同类】、默认修饰符【同包】、protected【子类】、public 【任何地方】 范围逐渐增大

抽象类 抽象事物的描述

public abstract class 名{}

访问修饰abstract 返回值类型方法名(参数列表)

接口类 约定规则的描述

public interface接口名{

定义变量,静态常量,定义时候必须赋值;

定义抽象方法 ;

默认方法;

静态方法;

私有方法;

}

  • 接口继承extends
  • 接口实现implements

抽象类有构造方法,而接口没有构造方法。

接口中只能定义公开的静态常量

抽象只能单继承,接口可以多继承

多态

概念

继承、接口也是多态的体现。

多态体现在类别、做事方式上

多态分为
  • 编译时多态【方法重载】(<1>编译时就已经确定如何调用)
  • 运行时多态(<1>不会调用父类定义的1方法,而是调用了子类重写的方法. 动物园的例子,节省了很多代码)
instannceof运算符
  • 对象名 instanceof类名;(检测对象是否为该类类的一个实例,返回boolean类,用来条件判断挺好)

Object类常用方法

  • getClass()返回Class对象,这个对象能获取该类的有关信息
  • hashCode()返回对象为哈希码,对象的内存地址(16进制)
  • equals(Object obj)比较两个对象是否相等,true ore false,完全相等
  • toString()返回对象的String表示形式,用在调试很好用,考虑重写方便调试
  • finalize()当该对象变为垃圾时,可以在该对象上调用

异常

  • Throwable

public StringgetMessage();//获取异常发生的原因

public void printStackTrace();//打印异常在栈中的轨迹信息

  • Error
  • Exception
  • RuntimeException
  • 检查异常
异常处理

使用5个关键字:throw、throws、try、catch、finnally

  • 【语法:throw 异常对象】
  • 【语法:访问修饰符 返回值类型 方法明(参数列表) throws 异常类型1 异常类型2 异常类型3 异常类型n】(只能抛出其中一种)
  • 【语法:try{ }catch(异常类型 异常对象名){ }catch(异常类型 异常对象名){ }catch(异常类型 异常对象名){}】
  • 语法:try{ }finally{ }/////////////////try{}catch{}finally{}

自定义异常

好处:只需要熟悉RuntimeException 、ExceptionThrowable就可以了

自定义运行时异常:

java 复制代码
public class 类名 extends RuntimeException{}

检查异常

java 复制代码
public class 类名 extends Exception{}

异常使用的注意事项123

字符串

String -------》构造方法

-----------》常用方法

  1. 获取长度
  2. 字符串比较
  3. 大小写转换
  4. 获取字符在字符串中的下标、字符串在字符串中的下标
  5. 获取字符串指定下标的字符
  6. 字符串截取
  7. 字符串替换
  8. 获取字符数组
  9. 获取字节数组
  10. 字符串拼接
  11. 去除字符串两端的空白字符
  12. 字符串分割
  13. 字符串匹配正则表达式
  14. intern()方法

SringBuilder-----------》特性

------------》构造方法

------------》常用方法

<1>final修饰的,不可能被继承,StringBuilder构建的对象可以实现字符序列的追加,不会产生新的对象,只是将这个字符序列保存在字符数组中

<2>构造方法,构建一个对象,构建并指定初始化容量,构建并将指定字符串存入其中

<3>常用方法

追加、删除、

相关推荐
Scott9999HH5 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
腻害兔5 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社6 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海6 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖7 小时前
JDK 26 新特性详解
java·开发语言
马优晨7 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区9 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大10 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai10 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
维天说10 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json