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>常用方法

追加、删除、

相关推荐
摇滚侠2 小时前
Kong API 列表加 curl 访问案例 通过 curl 修改 router 的 method
java·kong
ShuiShenHuoLe2 小时前
maven配置阿里源
java·数据库·maven
H_z_q24012 小时前
RHCE的时间服务器与NTP、chrony
java·运维·服务器
悟空码字2 小时前
三步搞定短信验证码!SpringBoot集成阿里云短信实战
java·spring boot·后端
码农爱学习2 小时前
C语言结构体对齐是怎么计算
java·c语言·数据库
黎雁·泠崖2 小时前
吃透Java操作符入门:分类差异+进制转换+原反补码 核心前置知识(Java&C对比)
java·c语言·开发语言
天天摸鱼的java工程师2 小时前
volatile 关键字底层原理:为什么它不能保证原子性?
java·后端
钟良堂2 小时前
Java完整实现 MinIO 对象存储搭建+封装全套公共方法+断点上传功能
java·minio·断点上传
满栀5852 小时前
三级联动下拉框
开发语言·前端·jquery